Re: [討論] 請大家聊聊 JavaScript的缺陷
※ 引述《accessdenied (存取違規)》之銘言:
: 你完全搞不清楚狀況喔。
: dotnet 的 Math.Round() 預設是 四捨六入(五遇到前面為基數才進位)的設計,也就是
: 銀行家捨入法,也就是第三個參數為 ToEven 模式,我指定 AwayFromZero 是因為想走四
: 捨五入。
: 拔掉這個,走四捨六入也行,dotnet 就是照本宣科來,根本沒有你說的浮點數精確錯誤
: 的問題。
: https://i.imgur.com/u1WLSnh.jpg
: 上圖的結果可以明確顯示, JS 的 toFixed() 這爛東西跟 dotnet 根本沒有可比性。js
: 完全是胡來的。
: 你可以參考這篇文章了解這個機制:
: https://www.itread01.com/p/1421856.html
: 順便求助一下啦,我為何一直戰 js round 這件事?因為我需要一個實作可以讓 dotnet
: 算出 js toFixed() 一樣結果的 function,但越是研究 toFixed()呈現的結果,越是靠
: 北。
: 如果知道哪邊有現成的實作,可以讓 dotnet 算出跟 js 一樣四捨五入的數字,讓我知道
: 算救貧道一命。
: 感恩
其實我上一篇已經有提到 Rounding mode 的選擇是關鍵了了,
然後那個不叫四捨六入......
另外 tofixed 又誰跟你說他是四捨五入了....
他是用浮點數的定位表示法(fixed-point notation) 計算的, 詳細實作有點囉嗦,
自己翻論文.
你的 csharp 好棒棒, 你就沒想過我上一篇是自己跑過才回的嗎
一定要把臉湊上來讓我打嗎 XD
dotnet framework 4.7.1/csharp 7.3
https://imgur.com/JddrvWW
另外如果要穩定的計算, 特別是牽扯到錢的,
都建議用 decimal , 會比較安全一點.
https://imgur.com/ZhQ5iQW
各位客官, 這兩篇真的不是我的鍋啊,
我只是回應一個不知道浮點數有多險惡的人而已.
另外如果想讓 js 在浮點數處理寫得更穩定一點, 有 decimal.js 可以用.
前文推文就提過, 此處不再贅述.
--
I have a dream, it's silly but beautiful.
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 210.61.209.201 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1605589660.A.B39.html
※ 編輯: TonyQ (210.61.209.201 臺灣), 11/17/2020 13:09:12
推
11/17 13:27,
3年前
, 1F
11/17 13:27, 1F
→
11/17 13:27,
3年前
, 2F
11/17 13:27, 2F
low cost 是相對的啊,不然你在 web 找個不用的,還是哪個語言原生 double 就用這種方式實作的。
lol
※ 編輯: TonyQ (223.137.174.34 臺灣), 11/17/2020 13:39:29
→
11/17 14:02,
3年前
, 3F
11/17 14:02, 3F
→
11/17 14:11,
3年前
, 4F
11/17 14:11, 4F
→
11/17 14:14,
3年前
, 5F
11/17 14:14, 5F
→
11/17 15:15,
3年前
, 6F
11/17 15:15, 6F
→
11/17 18:32,
3年前
, 7F
11/17 18:32, 7F
→
11/17 18:32,
3年前
, 8F
11/17 18:32, 8F
→
11/17 18:34,
3年前
, 9F
11/17 18:34, 9F
→
11/17 18:34,
3年前
, 10F
11/17 18:34, 10F
是也沒這麼誇張。
→
11/17 19:54,
3年前
, 11F
11/17 19:54, 11F
※ 編輯: TonyQ (223.136.191.168 臺灣), 11/17/2020 19:55:33
→
11/17 20:51,
3年前
, 12F
11/17 20:51, 12F
→
11/17 20:51,
3年前
, 13F
11/17 20:51, 13F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 16 之 19 篇):