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](/uploads/image/z/7845053-5-3.jpg?t=C%2B%2B%E6%B1%82%E5%A4%A7%E7%A5%9E%E8%B5%90%E6%95%99+C%2B%2B%E4%B8%AD%E4%BD%BF%E7%94%A8float+%E4%BB%8E1%2F1%E5%8A%A0%E5%88%B01%2FN+%E4%B8%BA%E4%BB%80%E4%B9%88%E5%92%8C%E4%BB%8E1%2FN%E5%8A%A0%E5%88%B01%2F1%E7%BB%93%E6%9E%9C%E4%B8%8D%E5%90%8C+%E5%85%B6%E4%B8%ADN%3D100000)
因为float的精度问题,从前向后加和从后向前加,其数据因精度原因得到的结果当然会有差异,超过精度的数据会被舍去.
你换成double会好一些.
再问: 那前后舍去的应该一样啊
再答: 不会的! 解释清楚这个挺麻烦的,需要了解浮点数在计算机中的存储形式才好。 浮点数在计算机中是采用二进制科学计数法存储的,两数相加后,如果结果在其有效精度内,则不会有偏差,如果结果超过其有效精度,则会舍去,先加有可能舍的少,后加有可能舍的多,故会不同。 因为,任何一个不是2的整数次方的数,都不能精确的在浮点数中存储,它们都会是一个无限循环二进制数,而数的存储是有限的,因此,精度决定了你的最终结果会有不同。
你换成double会好一些.
再问: 那前后舍去的应该一样啊
再答: 不会的! 解释清楚这个挺麻烦的,需要了解浮点数在计算机中的存储形式才好。 浮点数在计算机中是采用二进制科学计数法存储的,两数相加后,如果结果在其有效精度内,则不会有偏差,如果结果超过其有效精度,则会舍去,先加有可能舍的少,后加有可能舍的多,故会不同。 因为,任何一个不是2的整数次方的数,都不能精确的在浮点数中存储,它们都会是一个无限循环二进制数,而数的存储是有限的,因此,精度决定了你的最终结果会有不同。
C++求大神赐教 C++中使用float 从1/1加到1/N 为什么和从1/N加到1/1结果不同 其中N=100000
c语言从键盘输入n求1+2+...+n的结果并输出:while语句中为什么是n=n-1?不是n=n+1?
C语言程序从1的平方加到N的平方怎么写程序 ,急
C语言 :1加到n的阶乘之和
c语言中 用二维数组输出2的n次方,3的n次方,n从1到10
求幂级数 ∑[(n^2) * x^(n-1)],其中,n从1到∞ 的收敛区间及和函数.
用C++求从1的阶乘加到N的阶乘
求幂级数∑(n从1到无穷)(n+1)x^n的和函数
从1一直乘到100等于12的n次方乘m,其中m.n均为自然数,求n的最大值.要结果.思路.
关于一个c语言程序 输入一个数n 输出 1+2+3+4+.+n=加到n的和
n从1到无穷,n^2/n!级数求和
求C语言 编写程序 1的1次方加2的2次方加3的3次方……一直加到n的n次方.