作者averangeall (洗髮精用完了)
看板b97902HW
標題[心得] 為了玄妙的0.000000001 快哭出來了
時間Wed Oct 1 21:51:42 2008
昨天晚上在寫第三使徒
原本應該是可以在十二點多睡的
但因為幾個的BUG
不僅因此搞到半夜兩點 而且沒洗澡
還要麻煩森林真強者幫我看CODE
請大家有看到這篇文章 就不要再和我犯一樣的錯了
我當時的BUG有好幾個
像是輸入的地方忘了把 %d 改成 %lf
或是沒把參數 g 用上去
但有一個BUG 真是搞死我了
就是所謂的"浮點數"
我真是搞不懂你啊…
我有看強者寫的教學文
知道有時候它們在互相乘的時候 會出現誤差
比方說 3.8475 * 29.937403
有時候乘來乘去 會有 -0.0000000000003432 之類的東西
輸出時就會變 -0.000
所以要再加上 0.0000000001 才會變成 0.000
這我還能諒解
但是當我在MSN上請教強者的時候
他居然和我說
15.0 / 3.0 這種算式
浮點數也有可能會算成 4.999999999
這真的讓我感到悲從中來
因為題目中有一個地方 要寫
for(i = 0; i < T / dt; i++)
所以強者說
有可能在除的時候 一不小心它會差一點
所以要再加上 0.000000001 再轉成 int 格式 所以就變成…
for(i = 0; i < (int)(T / dt + 0.000000001); i++)
我聽強者的話 上傳之後
分數就變成了
十分
十分
快哭出來了
無獨有偶 要睡之前 嘉慶敲了我MSN
他似乎也遇到了類似的問題
但我後來沒辦法幫他處理完
因為我快睡著了…
而今天 克威也是遇到一模一樣的問題
昨天也是為了這個該死的問題 搞到三點多還沒睡
我們一起去219看他的CODE
我加了一行 T += 0.000000001
也就十分了…
所以 結論是
浮點數很奇怪
真強者很強
助教的測試資料很可怕
報告完畢
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.240.35
1F:推 benck:我也是一樣的問題耶 15/3可以變成4.99999999真的很怪 10/01 21:52
2F:→ benck:初學者(我)很難理解 10/01 21:53
3F:推 drazi:可以請真強者分析一下double的結構 就很明瞭了XDD 10/01 22:01
4F:推 iForests:唉唷我只是亂舉例,你這樣大庭廣眾下說出來我會被嘲笑的 10/01 22:01
5F:→ averangeall:強者你是說真的嗎 對不起 10/01 22:19
6F:推 LoganChien:有一些是因為二進位的關係,沒辦法不失真地轉換。 10/01 22:28
7F:→ LoganChien:聽說還有其他原因,不過我不知道。 10/01 22:28
8F:推 integritywei: 太超過了!!!!! 10/01 22:32
9F:推 lhooq:太超過了=口="...九分...九分啦!!! 囧 10/01 22:33
10F:推 benck:9分的code應該很難改呢= = 10/01 22:41
11F:推 gaga19900329:9分+1啊 囧囧囧~ 10/01 22:46
12F:推 JeromeWu:為了這個問題我多傳了八次.....無言了... 10/01 22:51
13F:推 ckclark:計概有教浮點數嗎 明天助教課可以稍微提一下 10/01 22:55
14F:推 pangfeng:助教的測試資料很可怕 10/01 23:37
15F:→ pangfeng:講一下IEEE浮點數標準應該就會懂了. 10/01 23:39
16F:推 davidpanda:大推這篇,看完之後瞬間從7分變十分...... 10/01 23:40
17F:推 prismwu:9分@@|| 真搞不懂... 10/01 23:46
18F:推 benck:測試資料很可怕!?? 10/02 00:04
19F:推 ckclark:誤會啊.... 10/02 00:06
20F:推 applerman:真是謝謝大大的提醒~改了那個部分~我也變十分了!好感動! 10/02 00:09
21F:→ applerman:可是我是傳第四次才成功了~這樣有關係嗎~聽說只能三次! 10/02 00:11
22F:推 benck:沒有限制次數吧 10/02 00:12
23F:推 LoganChien:如果你是要用 T/dt 轉 int,你可以用 floor(T/dt) 之類 10/02 00:13
24F:→ hrs113355:我是用乘的 i*dt < T 過了... 10/02 00:16
25F:推 jimmy319:我到處加了加0.0000000001進步6分到10分了 好驚人的東東! 10/02 00:37
26F:推 Bakaking:大推這篇 看完之後從四分變成十分!! 10/02 00:41
27F:推 davidpanda:只能三次? 沒有吧....... 10/02 08:54
28F:推 applerman:每個人進步的分數都不一樣唷~好奇怪~~呵呵~我是從1變10! 10/02 13:09
29F:推 applerman:三次...可能我記錯了,sorry,還是有人嚇我~⊙⊙” 10/02 13:23
30F:推 Xerses:在一片迷茫之中亂加1e-10於是就過了....此文不推更推何文ꐠ 10/02 15:00
31F:→ averangeall:謝謝大家的支持 要推就推森林真強者吧 10/02 15:01