`

支付交易中遇到浮点数精度的问题

    博客分类:
  • Java
阅读更多

1,案例

支付平台的单位是分,而业务系统的单位是元,所以传到支付系统时要乘以100

 

@Test
	public void test_divide2() {
		String payAmountStr="1011";
		float f=Float.parseFloat(payAmountStr);
		float result=f/100f;
		System.out.println(String.valueOf(result*100));
	}

 运行结果:1010.99994

 

但是预期结果是:1011

 

2,解决方法:使用BigDecimal

@Test
	public void test_divide() {
		String payAmountStr="1011";
		BigDecimal chanpayAcount=new BigDecimal(payAmountStr);
		BigDecimal bssAcount=  chanpayAcount.divide(new BigDecimal(100));
		System.out.println("使用BigDecimal");
		System.out.println(String.valueOf(bssAcount.multiply(new BigDecimal(100))));
	}

 运行结果:

使用BigDecimal

1011.00

 

 

  • 大小: 41.8 KB
0
1
分享到:
评论

相关推荐

    安卓支付宝天猫淘宝相关相关-该包为七日年化收益率的折线图在原先的基础上优化了可能存在的浮点数除不尽问题以及部分手机出现的内存泄漏问题.rar

    在计算机科学中,浮点数运算可能会遇到精度问题,尤其是在涉及除法操作时。这是因为浮点数在计算机内存中的表示是有限的,不能精确表示所有实数。因此,当两个浮点数相除时,可能会出现无法精确除尽的情况,导致结果...

    JAVA 解惑(解析JAVA开发中的95个疑惑点)

    **描述**: 本节探讨了在Java中进行浮点数运算时可能遇到的精度问题。 **详细解释**: 在实际应用中,比如财务计算场景,我们需要确保计算结果的准确性。然而,由于浮点数(如 `float` 和 `double` 类型)的内部表示...

    Money一个Fowler货币模式的PHP实现

    1. **货币类(Money)**:这个类会封装一个货币的数值,通常使用整数表示,以避免浮点数精度问题。它可能包含构造函数,接收货币的值和货币类型(如USD、EUR等)。 2. **货币工厂(MoneyFactory)**:用于创建Money...

    Java 谜题解惑

    当涉及货币计算时,使用整数类型(例如`int`或`long`)来表示货币单位通常是更好的选择,以避免浮点数精度带来的问题。此外,也可以考虑使用`BigDecimal`类来处理货币相关的计算,以确保精确度。

    Java 解惑

    下面的例子展示了在使用Java的双精度浮点数(`double`)时可能会遇到的问题。 **问题描述** 假设有一个顾客Tom在一家商店买了一个价值1.10美元的商品,并用2美元支付。理论上应该找回0.90美元。然而,Java程序的...

    C语言设计题代码.docx

    可以使用浮点数进行计算,但需要注意浮点数精度问题。 3. **判断是否及格**:一般根据分数(整数)与及格线比较,使用条件语句(if...else)实现。 4. **计算三个数的最大值**:使用条件运算符或if语句比较三个数...

    java谜题中文版

    为解决货币计算中的浮点数问题,应使用整数类型(如`int`或`long`),并以分为单位进行计算。例如: ```java public static void main(String[] args) { int payment = 200; // 以分为单位的2美元 int itemCost =...

    Java解惑.pdf

    - **双精度浮点数的限制**:在Java中,`double` 类型用于表示浮点数。然而,并不是所有的小数都能够精确表示为二进制形式。比如,1.1 无法精确表示为一个有限长度的二进制小数。 - **精度损失**:由于这种表示上的不...

    iava解惑,深入剖析java

    需要注意的是,Java中的浮点数运算可能会有精度问题,因此在处理金钱时,通常使用`BigDecimal`类来确保精度。 谜题3:长整除 长整除可能涉及到`long`类型的使用。在进行大整数除法时,若结果超过了`int`类型的范围...

    2012湖南ACM比赛

    **特别注意:** 根据题目描述,“如果答案错的话,认真检查一下代码吧”,暗示可能在计算过程中存在一些容易忽视的小细节或陷阱,如浮点运算导致的精度问题。 **代码实现建议:** - 使用整数进行计算避免浮点数带来...

    阿里开发手册

    BigDecimal类是Java中用于提供精确浮点数计算的一个类,常用于涉及高精度计算的金融、支付等场景。在判断两个BigDecimal对象是否相等时,禁止使用equals()方法,这是因为在Java中,equals()方法会被BigDecimal内部的...

    JavaScript 格式化数字、金额、千分位、保留几位小数、舍入舍去

    需要注意的是,JavaScript 中的浮点数计算可能存在精度问题。这是由于浮点数在计算机内部是以二进制形式表示,而某些十进制小数无法在二进制中精确表示,导致计算结果可能与预期有细微的误差。在金融计算中,这类...

    PHP FATAL ERROR: CALL TO UNDEFINED FUNCTION BCMUL()解决办法

    在问题描述中提到的情况,服务器在进行网络支付处理时遇到这个问题,可能是由于在服务器迁移过程中,新环境的PHP配置或扩展没有正确配置。服务器环境为PHP 5.3.3运行在Red Hat 4.1.2-54系统上,错误日志显示在加密...

    内部收益率(IRR)计算

    7. **浮点数精度问题**:由于计算机表示浮点数的有限精度,IRR计算可能会遇到微小误差,需要设置合适的终止条件。 8. **代码结构**:一个好的IRR计算程序应该包含清晰的数据结构(如结构体或类)来存储现金流信息,...

    java基本程序设计

    例如,`int`类型通常用于表示整数,而`double`类型则用于表示双精度浮点数。选择合适的数据类型对于提高程序的性能至关重要。 - **运算符和表达式**:运算符用于执行特定的计算任务,如算术运算、关系运算、逻辑...

    php仿微信红包分配算法的实现方法

    以及如何避免在循环过程中因浮点数计算产生的精度误差问题。 在该实现方法中,提到的PHP数学运算技巧涉及到了随机数的生成、基本的算术操作以及浮点数的处理。字符串操作技巧则体现在使用echo语句进行动态输出,将...

Global site tag (gtag.js) - Google Analytics