[問題] 浮點數的計算誤差

看板C_and_CPP作者 (XD)時間12年前 (2013/04/09 04:32), 編輯推噓1(109)
留言10則, 6人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC++ 問題(Question): double inp = 127.02; 1. inp *= 100.0;   int intInp = inp; 2. int intInp = inp * 100.0; 餵入的資料(Input):預期的正確結果(Expected Output): 12702 錯誤結果(Wrong Output): 1. 送出正確結果12702 2. 送出12701 可是感覺兩個做的事情好像..沒什麼差啊 @@ 都是做運算(double底下?)之後轉型成int? 請問為什麼會有不同結果呢 @@ -- TheBigaku:求我刪備份的價錢再來信和我談吧 hushiang:1F勒索 講藝人醜又怎樣 你以為會有事情喔?? 我沒在怕 AWinker:幫你備份一樓勒索你 TheBigaku:原po拜託你刪除我的推文謝謝 ev331:一樓恐嚇取財

大家不要這樣啦 要求刪除推文不會被桶

八卦版鄉民最友善了 拜託 ~

原po對不起 我不是有意的 求求你不要....
-- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.41.204.160

04/09 05:17, , 1F
1 跟 2 可能產生的是不同的機器碼。
04/09 05:17, 1F

04/09 05:18, , 2F
不同機器上跑出來結果也可能不一樣,建議你自己四捨五入。
04/09 05:18, 2F

04/09 13:54, , 3F
想知道 why + 1 ^_^
04/09 13:54, 3F

04/09 15:30, , 4F
這麼想知道就去 dump ASM 自己看啊...
04/09 15:30, 4F

04/09 21:22, , 5F
我用vc++2012/win7 64bit下兩個都是12702
04/09 21:22, 5F

04/09 21:38, , 6F
to nilim: 在 32 bit 下用到 80387 (FPU) 才會出現
04/09 21:38, 6F

04/10 00:40, , 7F
原來如此,我也很好奇asm會編成怎麼樣,想說試看看
04/10 00:40, 7F

04/10 00:41, , 8F
結果我電腦跑出來都一樣,沒得試
04/10 00:41, 8F

04/10 04:43, , 9F
好吧,其實我的問題只是要精準的弄到小數點後兩位而已 XD
04/10 04:43, 9F

04/10 04:44, , 10F
完全還沒碰過編成組合語言(?) 這一塊 XD
04/10 04:44, 10F
文章代碼(AID): #1HOobLFx (C_and_CPP)