Re: [討論] 請大家聊聊 JavaScript的缺陷
你完全搞不清楚狀況喔。
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 一樣四捨五入的數字,讓我知道算救貧道一命。
感恩
--
※ PTT 留言評論
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.135.20.48 (臺灣)
※ PTT 網址
→
PS:“銀行家舍入”是IEEE 規定的舍入標準。因此所
→
有符合IEEE標準的語言都是採用這一演算法的。
→
看來“所有語言“這件事並不包含 js
推
你可以試試用你的函數round 1.035是1.03還是1.04嗎?
→
可是toFixed是回傳string耶 type就不一樣了怎麼比
推
我是說用AwayFromZero設定
→
1.035 有什麼特別含意嗎?
→
如果用AwayFromZero 就會是1.04
→
fuck! 還真的是string 耶,什麼鬼啦!你不說我還沒
→
發現
推
我自己沒有dotnet所以在dotnetfiddle.net算1.035 awayfr
→
omzero的結果是1.03 所以想確認一下
→
@superpai 你是對的,1.035 awayfromzero 有問題
3
npm 的問題,我試著安裝了一下 因為說是去年7月遇到的,所以我使用 2020/06/30 發佈的 node 12.18.2 搭配 npm 6.14.5 在只有裝 archiver-utils 的情況下,他很平,可能比我婆軟體還平 archiver-utils 底下沒有 node_modules , readable-stream 底下也沒有34
在開始之前,先說個笑話 ※ 引述《keev (a)》之銘言: : 我會試著反駁 互相交流 然而下面這串推文直接被無視 : 推 vi000246: 還要學打包工具 好麻煩 11/03 00:222
聽到你說 C# 一樣有 js 四捨五入的問題,我驚呆了,你肯定沒有嘗試過,沒關係,我幫 你試過了! 真不知道你的自信哪裡來的 我承認浮點數是個棘手的問題,但是有的語言會謹慎處理,有的語言就是隨便處理,事實X
其實我覺得戰場大家自己拉開的亂七八糟, 我也不過就是逐一回覆, autocomplete 我也說了根本不是語言的重點, 是其他人重視,這樣可以說你們在討論缺陷, 我在討論 autocomplete 我也覺得是有趣。3
JavaScript 的概數運算確實沒有實作 IEEE 754 的標準, IEEE 754 中,Nearest value rounding 的方法有兩種: 1. Banker's rounding - 取到最接近的「偶數」 2. 取到最遠離 0 的數(效率佳) 但搞不清楚狀況的是對該語言不熟就隨便拿一個 function 來做概數的人,1
其實我上一篇已經有提到 Rounding mode 的選擇是關鍵了了, 然後那個不叫四捨六入...... 另外 tofixed 又誰跟你說他是四捨五入了.... 他是用浮點數的定位表示法(fixed-point notation) 計算的, 詳細實作有點囉嗦, 自己翻論文.8
不太認同, 如果今天的task是計算1加到10000 從紙上開始 1 + 2 + 3...一直算到10000可以解決問題 用等差數列的公式也可以解決問題 寫段code直接寫個function讓function可以支援不同的min, max也同樣能解決問題 這些方法都能解決問題?難道他們都是好方法嗎?17
我想 auto complete 可以算是開發工具的部分 (我猜任何語言理論上都可以有 auto complete,所以和語言本身無關) 而且在這篇沒看到原原 Po 提到,暫不討論 : 而且我還是那句話, 你今天碰到 ts 世界以外的模組, : 你是要怎麼 autocomplete 跟省時間.2
project scan 就是需要時間, 你檔案數多到一個程度, 就是慢. webpack 有那麼多 tooltip 再加速效能, 難道是假的. 說真的, 這段話反過來說也是可以還給你的. 連自己的 type 跟 convention 都掌握不好的, 是有什麼好靠邀的. 另外 js 的 autocomplete,2
有誰可以告訴我,JavaScript 的 toFixed()為什麼遇到1,4,7這幾個數字後面的5不會 進位呢? --
爆
[情報] 7/13~8/25飲料抽抽樂7-ELEVEN APP 指定飲料任2件,最低只要0元 另有49/59/69/79/89折優惠 (以四捨六入計算) 另有揪團解任務71
[情報] 7-11 i 珍食7折活動即期鮮食7折 試辦期間~5/19 類似全家友善食光 與全家不同的是多提前1小時70
[情報] 7-11啤酒節+五六日限定支付+兆豐icash聯名警語:真的有酒 警語:未滿十八歲禁止飲酒。 肉身實驗這些優惠可以combo 如果三個都combo成功,優惠約64折 國際啤酒節 指定啤酒任3件79折、任6件77折(以五捨六入計算)33
Re: [問題] 這個月新光OU帳戶利息問題收到42+263=305的,其實利息少了1元,就看要不要去爭取。 原本沒算錯的話是200000*31*1.8%/365=305.75,四捨五入為306 但因為一開始計算錯誤只算0.25% 200000*31*0.25%/365=42.47,四捨五入為42 後來補上1.55%8
[情報] 7-11 三支付指定商品滿200打八五折慶康是美400店 85折 110/10/06~10/07 限時兩天,持icash2.0、icash Pay、OPEN錢包 買全店指定商品滿200元享85折(以五捨六入計算)9
[討論] 將來銀行N點回饋我特地去官網看看N點回饋,不足一點部分採用四捨五入計算但將來銀行還是給我0.48點這 種不滿一點N點無上限回饋(蠻感謝的),我想問一下無上限回饋是用1%直接算還是算完要四4
[情報] 711 錢兔似錦刮刮樂活動原本想買大吉大利柑橘拿鐵 但發現新品不適用優惠 錢兔似錦刮刮樂活動獎項 任選2件89折 (以五捨六入計算)2
[問卦] Microsoft是否應該將Unity3d收購?As title,DotNet 6 在今年11月正式登場,首先看看這張圖: 這紅明顯吶,Microsft已經將Unity3D遊戲引擎視為現今DotNet版圖神聖不可分割的一部 份了,不過一直很納悶的是,微軟為啥至今都不將Unity3D給收購下來,讓DotNet版圖更 加完整?