Re: [討論] 請大家聊聊 JavaScript的缺陷
※ 引述《accessdenied (存取違規)》之銘言:
: 你完全搞不清楚狀況喔。
JavaScript 的概數運算確實沒有實作 IEEE 754 的標準,
IEEE 754 中,Nearest value rounding 的方法有兩種:
1. Banker's rounding - 取到最接近的「偶數」
2. 取到最遠離 0 的數(效率佳)
但搞不清楚狀況的是對該語言不熟就隨便拿一個 function 來做概數的人,
今天誰敢用 toFixed 去處理概數啊 ...?它本身就不是一個處理概數的 function!
連自己在用的 function 意義都不知道,還很驚訝回傳是 String 更是讓人搖頭。
Number.toFixed() 開宗明義就說了:
「toFixed 回傳一個字串,包含此數字與指定位數的小數。」
不要用 toFixed() 處理概數是常識 ...
-
最接近概數法的是 Math.round,但是它只能處理小數點後一位,
因此必須先做數值處理,將小數點往前拉之後再處理回原位,
但 Math.round 並沒有做 IEEE 754 所說的那兩種方法,而是單純的逢五進位,
因此 3.5 => 4
-3.5 => -3
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.169.243.127 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1605590224.A.9EF.html
推
11/17 13:24,
5年前
, 1F
11/17 13:24, 1F
→
11/17 13:25,
5年前
, 2F
11/17 13:25, 2F
→
11/17 13:25,
5年前
, 3F
11/17 13:25, 3F
→
11/17 13:25,
5年前
, 4F
11/17 13:25, 4F
→
11/17 13:25,
5年前
, 5F
11/17 13:25, 5F
※ 編輯: kusakawa (1.169.243.127 臺灣), 11/17/2020 13:26:11
CoNsTaR 大,你把兩件事情混在一起了:
1. 關於 type,本來就應該知道每個 function 回傳的資料型態,
今天有人很詫異為什麼 toFixed() 回傳是 String,
啊文件裡面就有寫啊 ... 有什麼好奇怪?
2. 做 round 本來就該讀標準,round 有如此多不同的方法,不知道是哪個方法你敢用?
※ 編輯: kusakawa (1.169.243.127 臺灣), 11/17/2020 13:31:05
→
11/17 13:31,
5年前
, 6F
11/17 13:31, 6F
請看該作者的第一篇文,即在討論為何 toFixed() 的回傳值不符合他的概數預期。
噓
11/17 13:59,
5年前
, 7F
11/17 13:59, 7F
※ 編輯: kusakawa (1.169.243.127 臺灣), 11/17/2020 14:45:49
推
11/17 17:51,
5年前
, 8F
11/17 17:51, 8F
→
11/18 14:06,
5年前
, 9F
11/18 14:06, 9F
→
11/18 14:06,
5年前
, 10F
11/18 14:06, 10F
推
11/18 17:22,
5年前
, 11F
11/18 17:22, 11F
推
11/19 02:00,
5年前
, 12F
11/19 02:00, 12F
→
11/19 07:45,
5年前
, 13F
11/19 07:45, 13F
討論串 (同標題文章)
Soft_Job 近期熱門文章
PTT職涯區 即時熱門文章
11
45