2016 - 2024

感恩一路有你

java浮点数默认类型 为何浮点数可能丢失精度?

浏览量:1315 时间:2021-04-10 09:36:38 作者:admin

为何浮点数可能丢失精度?

并不是说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

Float占用4个字节,精度为7位,而double占用8个字节,精度为16位。但是,内存消耗很大。如何使用取决于实际需要。如果你只是学习Java,你不需要深入了解它,以免陷入困境。如果你深入学习,问问度娘。

java浮点数默认类型 java double精度丢失 java浮点数比较大小

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。