作者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