java 两个float数值相加精度问题

floata=0.3f;floatb=0.4f;floatc=0.5f;floatd=0.2f;syso(a+b);syso(a+c);syso(b+c);syso(c+... float a = 0.3f;
float b = 0.4f;
float c = 0.5f;
float d = 0.2f;

syso(a+b);
syso(a+c);
syso(b+c);
syso(c+d);

--------------------------
输出:
0.7000005
0.8
0.9
0.7

为什么0.3+0.4的0.7后边会出现多位小数,后边的两个相加却不会呢,就算是有精度问题,这应该都是会有一样的问题的啊,而且0.2+0.5就不会出现这种情况,是在是费解啊,求大神指导一下
展开
 我来答
459402930
2015-08-28 · TA获得超过444个赞
知道小有建树答主
回答量:292
采纳率:83%
帮助的人:180万
展开全部
要考虑精度问题,就别用float,double 这些类 用bigdecimal 。我以前好像看过一些文章,说的好像, float,double这些类产生精度问题是因为要用二进制来表现小数,有些小数是用二进制表现不出来的,这中间就造成了精度的问题。具体的文章,地址,我也想不起来,去百度上搜搜吧,
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式