看板 Soft_Job 關於我們 聯絡資訊
※ 引述《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
CoNsTaR: 再次證明不能寫 type annotations 造成的麻煩 11/17 13:24
CoNsTaR: 喔對我知道,一定是因為對語言不夠熟,大家都該先把標準 11/17 13:25
CoNsTaR: 讀完再來對吧 11/17 13:25
CoNsTaR: 作個 round 還要先讀標準,真是 low cost 啊 11/17 13:25
CoNsTaR: 寫個 type 多幾個字真是沒有人想承擔的 high cost 啊 11/17 13:25
※ 編輯: 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
as30385438: 原文是想重現toFixed,而不是拿他處理概述吧 11/17 13:31
請看該作者的第一篇文,即在討論為何 toFixed() 的回傳值不符合他的概數預期。
samuel1988: 是你搞混了 11/17 13:59
※ 編輯: kusakawa (1.169.243.127 臺灣), 11/17/2020 14:45:49
art1: 看不出哪裡搞混了 11/17 17:51
johnidfet: 居然把read standard當作cost...前端果然是雷包很多的 11/18 14:06
johnidfet: 環境 11/18 14:06
mrbigmouth: 我沒把標準讀熟就跑去寫程式然後寫錯 都是程式的錯 11/18 17:22
netburst: 11/19 02:00
jobintan: 應該是人的問題才導致程式出錯。 11/19 07:45