近日在群中看到一个小兄弟求助:
int a = 58;double b = 0.35;
double c = a*b;
为什么等于
20.29999999999997
而不是等于
20.3
我在计算机思索一,是啊为什么呢?学习java两年这个问题突然不知怎么回答?经过再三考虑将我的想法发表出来,请大家一起讨论!
1. 首先要明白计算机只识别0和1。
2. 因为在java里面浮点数的表示是根据IEEE754标准来表示的,
这就是所谓的精度丢失,是因为小数在转二进制时有些小数是转不清的,丢去了一部分。
所以总结出来出来:再牛逼的计算机也只认识0和1!
本文转自 小夜的传说 51CTO博客,原文链接:http://blog.51cto.com/1936625305/1140059,如需转载请自行联系原作者