[JS] 函式 toFixed 的陷阱

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

半導體產業簡介

半導體產業簡介: 所謂微電子產業,就是生產 積體電路 ( 大陸稱為 集成電路 ) 的產業 。 積體電路 (Integrated Circuit ,簡稱 IC) 在電子學中是一種把電路(包括半導體裝置、元件)小型化的方式、並製造在半導體晶圓表面上。所以半導體只是製作「 ...