Fork me on Github

计算机运算的BUG

   今天开发偶然发现js的一个小bug,记录一下

console.log("-0.3077" *100) // 输出 -30.769999999999996

  

后来发现在Java中也是这样

String a = "0.3077";
double b = Double.parseDouble(a);
System.out.println( b * 100);
// 输出 30.769999999999996

  

python也有类似情况

print(0.3077 *100)  // 输出 30.769999999999996

*但是在python中有区别,前两个只是在字符串转过来之后这种情况下才有这种问题,而python则是通过小数直接乘出来就有问题,而且我发现了更多

 

 这些在JS和Java中通过字串转出来也是这样,

目前我发现无论是Linux还是Windows都有这种情况,我觉可能是cpu的通病,你们觉得呢

这因该是计算机的精度问题,另外在js中还有这样的问题

0.1 + 0.2 // 0.30000000000000004

  

 

posted @ 2020-08-26 16:04  王者归来!  阅读(206)  评论(0编辑  收藏  举报