unity中,大多數時候,都需要用 float 型別,
與 int 型別不同, float 型別在進行計算的時候,會有誤差,
或多或少。
有乙個問題,就是誤差是會累積的,
假如,一次誤差 0.001是無傷大雅的,
但是,累積到 0.1的時候,可能,就會出現問題,
最直觀的情況,就是 地圖的拼接,
大多地圖都是由地塊 ,一塊一塊拼接而成,
假如,兩個地塊之間的誤差,僅僅只有 0.1而已,
但是,從畫面上,很有可能,直接就能看出 接縫,
此時,就是穿幫了。
可是,float 是無法真正的精確的,誤差是一定會存在的,
那麼,怎麼辦呢?
辦法就是盡可能的減少誤差。
假如,有 a 和 b 兩個物體,
都在地圖上,乙個座標是 (0,0,1),
乙個座標是 (0,0,2)
假如他們的位置是相對靜止的,
那麼,當畫面動起來時,
我們可能讓a 和 b 的都加上同乙個偏移量,
但是,這不是最好的辦法,這麼做,誤差仍然還會累積,
有乙個辦法,可以讓誤差不再累積,
b相對於 a 的座標是 固定的,
所以,讓 a 來移動, b 動態獲取 a的座標,再加上相對位置的座標,
就變成了,即使 a 有誤差累積,但是, b 相對於 a 的位置,始終都是固定的,
兩個地磚之間,相對的位置不發生變化,那麼,地磚之間接縫的問題,就不會出現了。
2 6 精確表達浮點數
任何乙個無限迴圈小數或有限小數都可以表示為分數的形式。1 有限小數 假設為a.b1b2b3b4b5 我們可以表示為 a b1b2b3b4b5 10 5 2 無限迴圈小數 假設為a.b1b2b3b4b5b6 c1c2c3c4 a.b1b2b3b4b5b6 c1c2c3c4 ab1b2b3b4b5b6....
PHP浮點數的精確計算BCMath
php bcmath bc是binary calculator的縮寫。bc 函式的引數都是運算元加上乙個可選的 int scale 比如string bcadd string lef tope rand str ingleftoperand,string right operand int scal...
Python 執行精確的浮點數運算
需要對浮點數執行精確的計算操作,並且不希望有任何小誤差的出現.浮點數的乙個普遍問題是它們並不能精確的表示十進位制數。並且,即使是最簡單的 數 算也會產生小的誤差,比如 a 4.2 b 2.1 a b 6.300000000000001 a b 6.3 false false 是由於底層cpu和iee...