【Java最佳实战记录】double转BigDecimal,数值变大问题

之前把double类型数据转成BigDecimal类型数据,直接使用new BigDecimal(),结果导致转换后的数值变大。如要将double转BigDecimal,使用BigDecimal.valueOf()方法。

public class TestB {
    public static void main(String[] args) {
        double a = -0.0025;
        BigDecimal b1 = new BigDecimal(a);
        BigDecimal b2 = BigDecimal.valueOf(a);
        BigDecimal b3 = new BigDecimal("-0.0025");

        System.out.println(b1);//结果为 -0.0025000000000000000520417042793042128323577344417572021484375
        System.out.println(b2);//结果为 -0.0025
        System.out.println(b3);//结果为 -0.0025
        System.out.println(b1.compareTo(b2));//结果为 -1
        System.out.println(b1.compareTo(b3));//结果为 -1
        System.out.println(b2.compareTo(b3));//结果为 0
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 在java中float赋值给double,会产生精度问题。 输出为2.0999999046325684。 小...
    我叫小小强阅读 19,268评论 2 23
  • 1 数据类型 Java 是一种强类型语言。这就意味着必须为每一个变量声明一种类型: 在 Java 中,一共有 8种...
    adXiang阅读 1,013评论 0 0
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,860评论 18 139
  • 觉得这样的生活也很好。 走出图书馆,看见蓝蓝的天。 那座塔在蓝天绿树下显得格外的好看。 不是缺少风景, 是缺少发现...
    陌上墨言阅读 375评论 0 1
  • 清明雨淅沥 沽酒去寒寂 惺惺人落寞 一樽眼迷离
    淞清梅杰阅读 190评论 0 0