• JAVA中使用浮点数类型计算时,计算精度的问题


    标题     在Java中实现浮点数的精确计算    AYellow(原作) 修改    
    关键字     Java 浮点数 精确计算   
    问题的提出:
    如果我们编译运行下面这个程序会看到什么?
    public class Test{
        public static void main(String args[]){
            System.out.println(0.05+0.01);
            System.out.println(1.0-0.42);
            System.out.println(4.015*100);
            System.out.println(123.3/100);
        }
    };
    你没有看错!结果确实是
    0.060000000000000005
    0.5800000000000001
    401.49999999999994
    1.2329999999999999
    Java中的简单浮点数类型float和double不能够进行运算。不光是Java,在其它很多编程语言中也有这样的问题。在大多数情况下,计算的结果是准确的,但是多试几次(可以做一个循环)就可以试出类似上面的错误。现在终于理解为什么要有BCD码了。

    ......

    原文地址:http://blog.csdn.net/pttaag/article/details/5912171

    这个问题的确是平时工作中经常容易疏忽的一个问题,我自己总结了下,解决的思路有2个:

    1.使用BigDecimal方法,构造可以精确计算的方法来解决精度问题(上文中推荐的方法)

    2.无视精度计算,在做科学计算或者是工程计算时,在最终输出的时候,进行精度的保留小数点操作

                    BigDecimal bigDecimal = new BigDecimal(requirementNum);//四捨五入保留四位小數
                    requirementNum = bigDecimal.setScale(4,BigDecimal.ROUND_HALF_UP).doubleValue();
    

    PS.方法2,我认为最好不要在JAVA端做,而是应该有前端根据实际业务,选择显示几位。所以推荐使用方法1去做

  • 相关阅读:
    编写Excel文件的Golang库
    Go多组Raft库
    Go GraphQL初学者教程
    简洁架构的思想,基于go实现
    gometalinter代码质量检查分析工具(golang)
    用go实现一个redis-cli
    Sublime text —— 自定义主题Soda
    Sublime text —— 自定义Color theme
    Sublime Text增加Build system类型,打造一个全能IDE
    一个简单的增强型PHP curl函数
  • 原文地址:https://www.cnblogs.com/xujanus/p/8036391.html
Copyright © 2020-2023  润新知