【C++】为什么简单的相加结果却不对
如题,C++的相加浮点型相加,我把a的值改成其他答案(例如4.2)就正确显示,可为什么5.2+3.1的结果会是8.999999(9的循环)呢?我的猜测
像我之前问过朋友,他是这么解释的:
因为浮点数值采用二进制系统表示,而在二进制系统中无法精确地表示分数3/10,
这就好像十进制无法精确地表示分数1/3一样
他这个说法我刚开始是表示赞同的,但我想到了另一个问题:
所谓的0.9(9的无限循环)是否等于1
事实证明不对,我但凡把5.2换成别的,结果都是正确的(例如4.2) 浮点运算就是这样的 二进制不能准确的表示0.1这个数,改0.1这个数值就是精确地 了解一下浮点数的构成,这本来就是不精确的,float的有效数字只有6位 改成double类型即可解决 楼主这个这个结果是8.2999这个值是正确的,二进制转浮点时会产生量化误差的,你可以了解一下浮点的原理,你上面写的8.9999这个值是不对的 0.9循环=1的结果是数学推导,浮点计算是计算机的运算模式,两个就不是一回事情 这个还真不好说,我看了,也看的不是很通透。 刚学C++,没看懂include<iostream>的意义在哪
这个不应该是个标准的c语言程序么{:301_985:}
页:
[1]
2