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
--
再次證明不能寫 type annotations 造成的麻煩
喔對我知道,一定是因為對語言不夠熟,大家都該先把標準
讀完再來對吧
作個 round 還要先讀標準,真是 low cost 啊
寫個 type 多幾個字真是沒有人想承擔的 high cost 啊
CoNsTaR 大,你把兩件事情混在一起了: 1. 關於 type,本來就應該知道每個 function 回傳的資料型態, 今天有人很詫異為什麼 toFixed() 回傳是 String, 啊文件裡面就有寫啊 ... 有什麼好奇怪? 2. 做 round 本來就該讀標準,round 有如此多不同的方法,不知道是哪個方法你敢用?
※ 編輯: kusakawa (1.169.243.127 臺灣), 11/17/2020 13:31:05原文是想重現toFixed,而不是拿他處理概述吧
請看該作者的第一篇文,即在討論為何 toFixed() 的回傳值不符合他的概數預期。
是你搞混了
看不出哪裡搞混了
居然把read standard當作cost...前端果然是雷包很多的
環境
我沒把標準讀熟就跑去寫程式然後寫錯 都是程式的錯
應該是人的問題才導致程式出錯。
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
你完全搞不清楚狀況喔。 dotnet 的 Math.Round() 預設是 四捨六入(五遇到前面為基數才進位)的設計,也就是 銀行家捨入法,也就是第三個參數為 ToEven 模式,我指定 AwayFromZero 是因為想走四 捨五入。 拔掉這個,走四捨六入也行,dotnet 就是照本宣科來,根本沒有你說的浮點數精確錯誤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不會 進位呢? --
62
Re: [Vtub] 百鬼:你行你上!大概數小時前這位烤肉man有編輯了他的社群 回應的縮網址和截圖我都一併附上 我覺得也算是個不錯的收場了16
[討論] 你們討厭數學的原因是什麼剛剛演算法帶我看到一條新聞 讓我想起討厭數學的那段痛苦的日子 又是街訪民眾解小二數學題 估估看,答案最接近多少? 83—37=?4
Re: [討論] 請大家聊聊 JavaScript的缺陷: : : : 有誰可以告訴我,JavaScript 的 toFixed()為什麼遇到1,4,7這幾個數字後面的5不會 : 進位呢?3
Re: [新聞] 小二數學「83-37」最接近哪數字?正解出這題就練習概數 因為二年級一般減法還不太熟練 大家概抓答案 本來就先對減數和被減數先處理 所以答案是403
Re: [討論] 請大家聊聊靜態語言的缺點借題發揮一下:static typed for the win 不過還是先切題回答「靜態語言的缺點」: 在大部分常用的靜態語言中,的確可能出現 valid program 不好標注 type 的情況 不過到底有多難標注就完全看是哪個語言跟哪個版本了 -----X
Re: [新聞] 小二數學「83-37」最接近哪數字?正解出概數你老師啦 這種就是白痴死記的八股題目 今天以十進位的觀點估算四捨五入所以 83 => 80 37 => 40