toFixed 的回傳型態是字串,因為 0.1 及其冪(用於顯示小數)在二進位浮點系統中無法表示(至少不能完全準確)。
例如,0.1實際上是0.1000000000000000055511151231257827021181583404541015625,0.01實際上是0.01000000000000001512072615120726151121926151721926191919691919196919191969 880859375。
因此(沒有十進制浮點或有理數類型),將其輸出為字串是將其精確修剪到顯示所需精度的唯一方法。
會遇到這個問題,是因為當我把值存成 excel 檔,並用公式做比較時,居然產生 32.05 小於 31.57 的判斷,檢查儲存格格式是通用格式,但實際上excel認為它是字串格式,直接改成數值格式也沒用,必需用儲存格旁的黃色驚嘆號警告的下拉選單,選擇轉換成數字,才能正常做數字的運算比對。
程式的部份則將 toFixed 的回傳值再用 parseFloat 處理過來解決這個問題。
No comments:
Post a Comment