1、單精度和雙精度數值型別最早出現在C語言中(比較通用的語言裡面),在C語言中單精度型別稱為浮點型別(Float),顧名思義是透過浮動小數點來實現資料的儲存。這兩個資料型別最早是為了科學計算而產生的,他能夠給科學計算提供足夠高的精度來儲存對於精度要求比較高的數值。
2、當我們比較兩個棍子的長度的時候,一種方法是並排放著比較一下,一種方法是分別量出長度。但是事實上世界上並不存在兩根完全一樣長的棍子,我們測量的長度精度受到人類目測能力和測量工具精度的限制。從這個意義上來說,判斷兩根棍子是否一樣長絲毫沒有意義,因為結果一定是False,但是我們可以比較他們兩個哪個更長或者更短。
3、可以嘗試在任何一個控制元件的屬性面板中,設定他的寬度為:3.2CM,當你輸入完畢後,你會發現值自動變成了3.199cm,無論你怎麼改,你都無法輸入3.200CM,因為實際上在電腦中儲存的並不是CM為單位的數值,而是“緹”為單位的數值,而“緹”和CM之間的比值,是個很難被除盡的數,因此你輸入完畢後,電腦自動轉換成了最接近的“緹”值,然後再轉換成釐米顯示到屬性面板上,這一乘一除,兩次四捨五入,誤差就出來了。
4、透過解剖單精度數值的二進位制儲存格式,我們可以清楚看到,實際上單精度/雙精度的儲存,都要透過乘法和除法,其中必有舍入,如果恰好你的數值在除法中被舍入了,那麼你賦的初值就很可能與你最終儲存的值不完全相同,其中的微小差異,並不與單精度/雙精度的設計目標相違背。
1、單精度和雙精度數值型別最早出現在C語言中(比較通用的語言裡面),在C語言中單精度型別稱為浮點型別(Float),顧名思義是透過浮動小數點來實現資料的儲存。這兩個資料型別最早是為了科學計算而產生的,他能夠給科學計算提供足夠高的精度來儲存對於精度要求比較高的數值。
2、當我們比較兩個棍子的長度的時候,一種方法是並排放著比較一下,一種方法是分別量出長度。但是事實上世界上並不存在兩根完全一樣長的棍子,我們測量的長度精度受到人類目測能力和測量工具精度的限制。從這個意義上來說,判斷兩根棍子是否一樣長絲毫沒有意義,因為結果一定是False,但是我們可以比較他們兩個哪個更長或者更短。
3、可以嘗試在任何一個控制元件的屬性面板中,設定他的寬度為:3.2CM,當你輸入完畢後,你會發現值自動變成了3.199cm,無論你怎麼改,你都無法輸入3.200CM,因為實際上在電腦中儲存的並不是CM為單位的數值,而是“緹”為單位的數值,而“緹”和CM之間的比值,是個很難被除盡的數,因此你輸入完畢後,電腦自動轉換成了最接近的“緹”值,然後再轉換成釐米顯示到屬性面板上,這一乘一除,兩次四捨五入,誤差就出來了。
4、透過解剖單精度數值的二進位制儲存格式,我們可以清楚看到,實際上單精度/雙精度的儲存,都要透過乘法和除法,其中必有舍入,如果恰好你的數值在除法中被舍入了,那麼你賦的初值就很可能與你最終儲存的值不完全相同,其中的微小差異,並不與單精度/雙精度的設計目標相違背。