java float double精度为什么会丢失

 我来答
LMLU23
2016-09-18 · TA获得超过901个赞
知道小有建树答主
回答量:373
采纳率:0%
帮助的人:365万
展开全部
这个不是java的问题,是二进制存储小数的问题,其他语言一样会存在。
考虑下二进制是如何存储小数的:
0.1是1/2
0.01是1/4
0.001是1/8
0.0....01(n位)是2^-n
二进制只能精确表示2的-n次方的整数倍小数
很明显这样是不能精确表示所有小数的,因此在存储的过程中就会丢失精度,比如x=0.3
其实这个丢失精度只是相对十进制而言的,十进制同样不能精确表示所有小数,例如1/3......
要精确地进行计算,请使用BigDecimal,并在计算时约束好小数位(比如精确到2位小数)。
float double只能用于科学计算。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式