`

java的double乘法精度问题

 
阅读更多

项目中实际的代码,我们实际的金额单位是元,精确到分,另外一个系统传递的时候需要的是整数,就是分,我们就简单乘以100转换了下,结果发现是有问题的:


public static void main(String[] args) {
        double payMoney = Double.valueOf("1253.59");
        String result = String.valueOf((int)(payMoney * 100));
        System.out.println(result);
    }




结果是:125358
因为1253.59*100 的结果是 125358.99999999999

还比较没有想到乘以100这种都有问题。

解决的方法是用BigDecimal,就不多说了。
0
2
分享到:
评论

相关推荐

    Java 加减乘除工具类(解决精度损失问题)

    //精度为2,舍入模式为大于0.5进1,否则舍弃 BigDecimal b1 = new BigDecimal(Double.toString(value1.doubleValue())); BigDecimal b2 = new BigDecimal(Double.toString(value2.doubleValue())); return b1....

    test2_JavaDouble类型比较大小_java编程_

    标题"test2_JavaDouble类型比较大小_java编程_"提示我们关注的是Java中`Double`类型的比较操作。通常,我们可能会像处理整数那样直接使用`>`或`来比较两个`Double`值,例如`double a = 0.1; double b = 0.2; if (a +...

    Java 基本类型double精度计算工具

    该工具用户进行double类型的精度计算,包含加法、减法、乘法、除法、精确点计算、小数点计算,限制小数点后数字

    Java 精确计算-double-float-String

    标题中的"Java 精确计算 - double-float-String"指向的是Java中处理浮点数(double和float)以及字符串表示的数值时可能遇到的精度问题,以及如何通过特定方法实现精确计算。描述中提到的链接指向了一个具体的博客...

    计算机精度问题(Double)

    本文主要探讨的是“计算机精度问题”,特别是关于双精度浮点数(Double)的表示和计算中可能出现的问题。 双精度浮点数(Double)在计算机中通常按照IEEE 754标准进行存储和运算,它提供了大约15到16位的有效数字,...

    浅谈Java double 相乘的结果偏差小问题

    `BigDecimal`是Java提供的一个用于进行任意精度的十进制运算的类,它可以避免浮点数运算的精度问题。以下是使用`BigDecimal`的示例代码: ```java import java.math.BigDecimal; import java.math.RoundingMode; ...

    DecimalFormat精度解决,商业运算精度问题

    - `BigDecimal(double val)`:通过一个`double`值创建`BigDecimal`对象,但这种方式可能会引入精度问题。 - `BigDecimal(String val)`:推荐使用字符串的方式创建`BigDecimal`对象,以确保精度不丢失。 ```java ...

    Java BigDecimal和double示例及相关问题解析

    在 Java 中,浮点数的表示形式有多种,包括 float 和 double 等,但是这些类型在进行计算时会出现精度问题,而 BigDecimal 则可以解决这种问题。本文将主要介绍 Java 中的 BigDecimal 和 double 的示例及相关问题...

    浅谈Java中的高精度整数和高精度小数

    Java 中的高精度整数和高精度小数 Java 中的高精度整数和高精度小数是指在 Java 编程语言中对大整数和小数的处理。高精度整数和高精度小数在实际应用中非常重要,例如在计算金钱的时候需要保留高精度小数,以避免...

    Java实现的浮点类的精确计算

    为了克服这个问题,Java提供了`java.math.BigDecimal`类,它提供了一种方法来进行高精度的十进制计算,从而避免浮点运算中的精度问题。 描述中的"Java实现的浮点类的精确计算"很可能就是指一个自定义的工具类,该类...

    Java用BigDecimal解决double类型相减时可能存在的误差

    在Java编程语言中,`double`类型用于表示浮点数,但存在精度问题,尤其是在进行数学运算时。这是因为`double`是基于二进制浮点数标准(IEEE 754)来存储和计算的,这可能导致计算结果与预期的十进制值存在微小的差异...

    double类型,精确的数据运算

    在编程领域,尤其是在进行数值计算时,数据的精度问题至关重要。`double`类型是Java、C++、Python等许多编程语言中的一个浮点数类型,它通常用来表示较大的数值或需要较高精度的计算。然而,`double`类型的精度是...

    java 公式计算汇总,直接调用其方法即可进行运算

    - 除法:`/`运算符处理除法,但需要注意浮点数除法可能导致的精度问题,封装方法如`public double divide(double a, double b)`,需要考虑除数为零的情况。 2. **科学计算函数**: - 正弦:Java中的`Math.sin()`...

    高精度算法(加法,乘法,除法,减法)

    在常规计算中,整数类型(如int)有一定的位宽限制,例如32位或64位,浮点数(如float和double)虽然可以表示较大的数,但精度有限,且存在舍入误差。在处理大整数、金融计算、密码学或高级数学问题时,这些局限性就...

    java数学计算工具类 double精确的加法算法 double精确的减法算法

    java数学计算工具类 double精确的加法算法 double精确的减法算法 精确的乘法算法 对精确的除法运算,当发生除不尽的 保留小数、数值精度

    Java基础练习代码入门题训练

    Java支持多种算术运算符,包括加法、减法、乘法、除法等。在例2-7中,展示了算术运算符的使用实例,包括简单算术运算和复杂算术运算。算术运算符可以用于各种计算和处理任务。 本资源涵盖了Java基础语法的多方面,...

    Java计算工具类

    为了处理浮点数计算后的精度问题,`MathUtil`类可能包含`round()`方法,用于对结果进行四舍五入,如`int round(double value)`。 7. **最大值和最小值**: 类中可能包含`max()`和`min()`方法来找出两个或多个数值...

    高精度 加减乘除 代码

    通常,计算机的内置数据类型(如int、float、double)都有其计算精度限制,对于超出这个范围的数值运算,可能会导致精度损失。为了解决这个问题,我们可以自定义数据结构和算法来实现高精度计算。这里我们以Pascal...

    Introduction to java programming

    - `Double.parseDouble(string)`: 字符串转双精度浮点数 - `Arrays.sort(type[] list)`: 排序数组 - `Arrays.binarySearch(type[] list, type key)`: 二分查找 #### 十二、数组 数组是一种存储同类型元素的数据...

    JAVA计算器 不包含括号可运算乘除加减以及三角函数

    同时,考虑到误差问题,可能需要使用`Math.round()`或`BigDecimal`来控制结果的精度。 这个项目的源代码很可能包含了以上提到的概念,包括运算符优先级的处理(可能没有括号),用户交互逻辑,以及三角函数的调用。...

Global site tag (gtag.js) - Google Analytics