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