"1-1/2+1/3-1/4+……+1/99-1/100求值,想问这里的double为啥不能换成float?
"1-1/2+1/3-1/4+……+1/99-1/100求值,想问这里的double为啥不能换成float?
int main(int argc, char *argv[])
{
double s=0;
int i;
for(i=1;i
问答/301℃/2024-05-11 09:00:42
优质解答:
误差在计算中的累积的问题.
float单精度浮点,double双精度浮点.
例如,自然数学中我们都知道1/6=0.1666666.是无穷小数,但是计算机中无法表示无穷小数,只能按一定精度截断.假设(仅仅是假设,只是为了说明问题,实际计算机中可能精度更高)
float 取0.167,double取0.1667,double的截断误差小于float.由于你的算法采用的迭代的方法,误差每一次都在累积.因此会出现float误差很大,double相对较小的现象.
况且,你的算式中不仅只有1/6,还有1/7,1/11.等很多无穷小数截断后的误差在累积.
因此,使用double比float好!
我来回答
猜你喜欢
- i haven't cleaned the room yet 改为被动语态 the room—— —— —— yet
- 高二简单数学题(过程)已知函数f(x)=3x3-9x+5(1)求函数在x=1处的切线方程(2)若x属于[-2.2],f(
- 翻译一个句子:中国也许是世界上最看重“面子”的民族
- 求b开头的双鱼座女孩英文名
- 已知a,b为两个正数,且a>b,设a1 = (a+b)/2 ,b1 = √ab,当n≥2,n∈N* 时,an = [(a
- 工业上应用电解原理制烧碱的几种方法的比较
- LED日光灯,知道灯珠的If,光源板是十三串六并的,共78颗灯珠,怎么大概估算该日光灯的功率,求仔细解说.
- 关于“信的”成语
- 谁知道怎样写词?
- 发光物体是否一定发热?为什么