zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Golang教程:并发介绍
    Go在windows10 64位上安装
    ElasticSearch 聚合
    ElasticSearch深入搜索
    ElasticSearch基础入门
    php安装扩展
    报错提示优化
    NK3C程序配置
    NK3C 业务权限控制
    关于测试方法
  • 原文地址:https://www.cnblogs.com/aiwen/p/9173249.html
Copyright © 2011-2022 走看看