Re: [VB6 ] 其實是很新手的問題....

看板Visual_Basic作者 (涼宮春日症候群)時間17年前 (2006/11/12 03:54), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串3/3 (看更多)
※ 引述《A1pha ([αλφα])》之銘言: : : 推 LPH66:浮點數精確度 11/11 20:18 : : 推 fumizuki:所有電腦共同的精確度問題 11/11 20:51 : : → fumizuki:務必要限制小數點第幾位...Round(X, 2) 11/11 20:52 : 為什麼會有這樣的問題啊? : 精確度問提是指說電腦也是會有「誤差」的嗎? : 像是人用一把尺畫三公分的線,永遠不會是準的3公分這樣? : 還有,為什麼同樣是運算, : Val(txt_percentage)/100印出來就會是3/100=0.03 : 而不是0.03000000745058之類的? : 感謝解答<(_ _)> 就說1/3好了 我們用十進位來算是會變成0.333333333333....的小數 那如果我們的表現空間是有限的 勢必要在某地方截掉 於是就變成0.3333333333 如果我們之後拿它去乘上6 就變成1.9999999998 不是2耶! 再抓一個: 2/3 在一樣的地方切掉 變成0.6666666667 (四捨五入) 之後拿它去乘上3 就變成2.0000000001 也不是2耶! 這就叫浮點數精確度誤差 有的時候這誤差小 印不到那麼多精確度時就會忽略 例如上面的例子我們如果只取小數3位 那都是會變成2.000的 但有時運算多次之後使得誤差變大了 就會顯示出來 例如我們拿第二個數去乘以自己5次再乘以3六次 理論上要變成2^6=64 但實際上: 0.6666666667 0.4444444445 一次 0.2962962963 二次 0.1975308642 三次 0.1316872428 四次 0.0877914952 五次 0.2633825856 一次 0.7901477568 二次 2.3704432704 三次 7.1113298112 四次 21.3339894336 五次 64.0019683008 六次 取(顯示)到小數第3位 變成64.002了! 運算一多誤差擴大就會這樣 --- 以上是在十進位下的類比 電腦內部是用二進位存的 所以就會有像0.2這樣的十進位有限小數在二進位也必須近似表示 (0.2的二進位:0.0011001100110011........) 不過道理是類似的 -- 実琴:「河野!你真的就這樣被物質慾望給吸引過去了嗎?!」 亨:「只要穿著女裝擺出親切的樣子,所有必要花費就能全免,似乎一點都不壞啊。」 実琴:「難道你沒有男人的尊嚴了嗎?!」 亨:(斷然道)「沒有。在節衣縮食生活吃緊學生面前,沒有那種東西。」 --プリンセス・プリンセス 第二話 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 192.192.197.115

11/12 04:13, , 1F
喔喔!!!感謝!!! 非常清楚~~我瞭解了!!<(_ _)>
11/12 04:13, 1F
文章代碼(AID): #15LYfjB3 (Visual_Basic)
文章代碼(AID): #15LYfjB3 (Visual_Basic)