double精度丢失如何解决 为何浮点数可能丢失精度?
为何浮点数可能丢失精度?
并不是说Java浮点数的精度会丢失,而是存储在二进制中的所有浮点数都可能会丢失精度(有些特殊的十进制值可以精确表示),所以存储在计算机中的浮点数有丢失精度的风险,但是丢失的精度不会影响我们的正常使用。当小数转换成二进制时,它们不一定用精确的二进制来表示,大多数情况下它们被当作近似值,这会导致精度的损失。如果用二进制进行计算,显然会进一步损失计算结果的准确性。举个简单的例子,0.1用二进制表示(十进制和二进制转换法)(1)0.1×2=0.2,0.0(2)0.2×2=0.4,0.00(3)0.4×2=0.8,0.000(4)0.8×2=1.6,0.0001(5)0.6×2=0.2,0.00011(6)0.2×2=0.4,0.000110(7)0.4×2=0.8取整数0得到0.0001100(8)0.8×2=1.6取整数1得到0.00011001(9)0.6x 2=1.2取整数1得到0.000110011(n)。。。得到一个无限循环的二进制十进制0.000110011没有办法用一个精确的二进制来表示0.1。而且计算机中用来存储浮点数的位数也是有限的,所以我们只能选择以一定的精度保存。当然,也有特殊的小数,比如0.25的二进制就是0.01
double精度丢失如何解决 int转float丢失精度 java中如何处理精度问题
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。