• BigDecimal的两个数相乘,看似失精


    在工作的过程中遇到了一个问题,那就是BigDecimal的两个数分别为1000和1.3,调用multiply方法将他们相乘,得到的结果竟然是:1300.0000000000000444089209850062616169452667236328125000;这里发现当参数是double时,构造的BigDecimal值实际上等于1.3000000000000000444089209850062616169452667236328125而不是1.3,这是因为1.3无法正确的表示为double(或者说对于该情况,不能表示为任何有限长度的二进制小数)。但是参数为String类型构造的BigDecimal值正好等于原值1.3。因此在构造BigDecimal值时通常选择参数为String类型的构造方法。

    如果double必须作为Bigdecimal的参数时,可以先使用Double.toString(double)方法将double转换为String,然后使用BigDecimal(String)方法。再使用BigDecimal.valueOf(double)方法获取值。参考原博客:https://blog.csdn.net/akkzhjj/article/details/45370425

  • 相关阅读:
    oracle去除字符串中间的空格
    java代理模式
    js方法中的this
    js中访问对象的方法
    Hadoop学习笔记
    查看电脑硬件常用命令
    Ubuntu18.0.4配置Hadoop1.2.1环境
    Entwurfsmuster
    WEB Front-end Development Technology
    Objekt Orientierte Programmierung C++
  • 原文地址:https://www.cnblogs.com/aiwen/p/9173249.html
Copyright © 2020-2023  润新知