作者luckychild (兑现承诺)
看板C_and_CPP
标题[问题] 有关数字运算一个很小的大问题
时间Thu Mar 12 22:05:13 2009
我遇到的情形如下
NormSquare=sum*(1/1024); 其中sum约为10e-25
这样编写把NormSquare cout出来後显是为0
如果这样编写
NormSquare=sum/1024; cout显示约为10e-14
我不明白其中的道理 为什麽会这样呢?
做数值运算通常就照这数学式key in
这种隐形杀手实在太恐怖了.
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.120.11.75
1F:推 VictorTom:1/1024 => 整数除以整数 => 0, 若有需要请强制转型:) 03/12 22:12
2F:→ tsaiminghan:猜测 (1/1024) =>整数除法,所以是0 03/12 22:12
3F:→ tsaiminghan:可以写(1.0/1024) 03/12 22:13
4F:→ tsaiminghan:sum/1024 你的sum应该不是int型态 03/12 22:13
5F:→ luckychild:嗯 我的sum是double 03/12 22:22
6F:→ luckychild:谢谢大家 03/12 22:23
7F:推 yoco315:请念数值方法… 03/12 22:44
8F:推 christianSK:数值分析里面应该有提到 03/13 00:44
9F:→ MOONRAKER:我想只是新手分不清楚 1 和 1.0 的差别吧 03/13 09:20
10F:→ MOONRAKER:连在FORTRAN都有1.(为了简短连屁股的 0 都省)的习惯 03/13 09:21