首页 新闻 会员 周边 捐助

java long类型与小数相乘

0
[已解决问题] 解决于 2021-09-15 17:20



我想要得到117.3这样的结果。为什么会变成117.30000000000001啊???!

15年的夏天的主页 15年的夏天 | 初学一级 | 园豆:47
提问于:2021-09-09 15:49
< >
分享
最佳答案
0

float类型和double类型的结果是不能保证值和你在数学书计算的一模一样,你的这个例子中输出的是117.30000000000001,下一次可能输出的是117.29999999999999,所以在做浮点型数的相等比较时,永远不要直接用一个浮点型的数==一个常量的数,因为很可能不相等,正确的做法是让两个数的差的绝对值小于一个很小的数。
一看就知道不是科班出身了,建议多去了解一下底层的原理。

奖励园豆:5
我是满意吖 | 菜鸟二级 |园豆:386 | 2021-09-09 17:31
其他回答(3)
1

1、复习计算机原理
数据是怎么储存的?原码、补码、反码
2、使用 java.math.BigDecimal 可以得到准确值——你想要的

非计算机专业 转 计算机?

快乐的欧阳天美1114 | 园豆:4010 (老鸟四级) | 2021-09-09 15:57
0

你还可以试一下浮点 0.1 + 0.2 也是不等于0.3的.
参考IEEE 754浮点数标准

TechMoeTiger | 园豆:36 (初学一级) | 2021-09-09 22:57
0

https://www.bilibili.com/video/BV1xq4y1D7Ep
看这个,这个讲的比较清楚

echo_lovely | 园豆:1584 (小虾三级) | 2021-09-12 20:39
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册