Xtramus Q&A
2015年9月21日 星期一
TCL運算得到錯誤數值
這問題發生原因,可能在於32位元和64位元電腦的處理方式。
假設有這樣運算如下:
$param*1000/125000000*($length+12+$frame_gap/8)
第一個變數假設是10000000,那運算結果會是:
$param*1000 = 10000000*1000 = 10000000000
換算成16進制來看會得到「0x2540BE400」
帶入運算值 > 32位元最大值。這個值都會預設裁切成1410065408,以符合32位元,把這個值再去做後面的運算,得到結果就是2924了。 最後得到完全錯誤結果,因此在數值運算時還是得考慮到這一點。
沒有留言:
張貼留言
較新的文章
較舊的文章
首頁
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言