作业帮 > 综合 > 作业

C++求大神赐教 C++中使用float 从1/1加到1/N 为什么和从1/N加到1/1结果不同 其中N=100000

来源:学生作业帮 编辑:搜搜做题作业网作业帮 分类:综合作业 时间:2024/07/15 17:34:04
C++求大神赐教 C++中使用float 从1/1加到1/N 为什么和从1/N加到1/1结果不同 其中N=100000
C++求大神赐教 C++中使用float 从1/1加到1/N 为什么和从1/N加到1/1结果不同 其中N=100000
因为float的精度问题,从前向后加和从后向前加,其数据因精度原因得到的结果当然会有差异,超过精度的数据会被舍去.
你换成double会好一些.
再问: 那前后舍去的应该一样啊
再答: 不会的! 解释清楚这个挺麻烦的,需要了解浮点数在计算机中的存储形式才好。 浮点数在计算机中是采用二进制科学计数法存储的,两数相加后,如果结果在其有效精度内,则不会有偏差,如果结果超过其有效精度,则会舍去,先加有可能舍的少,后加有可能舍的多,故会不同。 因为,任何一个不是2的整数次方的数,都不能精确的在浮点数中存储,它们都会是一个无限循环二进制数,而数的存储是有限的,因此,精度决定了你的最终结果会有不同。