Java显示特定浮点数时的怪问题

浮点数不能进行精确运算,这个问题想必大家都知道,我今天也不是讲这个问题,而是讲一个怪问题。

首先,请大家先看下以下几条语句的输出:

Double d1 = 0.005;

Double d2 = Double.parseDouble("0.005");

System.out.println(d1);

System.out.println(d1.toString());

System.out.println(d2);

输出会是什么呢?不就是0.005吗?

如果没遇到过,那大家是肯定想不到的了。输出是:

0.0050

0.0050

0.0050

为什么后面多了个0呢?我是无从知道原因了,经过多次测试,发现只有0.001,0.002直到0.009这 9 个数如果直接输出,是一定会多个0的,其他的浮点数未发现有这样的问题(若小数位太多,会以科学计数法方式显示,但不会后面多个0)。

 

最近做的一个项目就遇到了上述问题,虽然每次都得到了满足小数有效位数的要求,但就因为上述怪问题,害得我把每个结果都要用DecimalFomat进行格式化,由于数据多,而每个数据又由于所属对象的等级不同而有不同的有效位数要求,因此这样一来工作量一下子多了不少!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值