Re: [討論] 請大家聊聊 JavaScript的缺陷
※ 引述《accessdenied (存取違規)》之銘言:
: 標題: Re: [討論] 請大家聊聊 JavaScript的缺陷
: 時間: Mon Nov 16 14:46:50 2020
:
: https://i.imgur.com/inyE92c.jpg
: 有誰可以告訴我,JavaScript 的 toFixed()為什麼遇到1,4,7這幾個數字後面的5不會: 進位呢?
這件事情你拿去 csharp 的 Math.round(dbl,2) 跑也是一樣會有誤差的啦.
float & rounding 本身就是個複雜議題,
多數人連 rounding 其實有兩種 mode 都不知道.
這也是為什麼 csharp 推了一個 decimal 來記錄整數位跟帶小數位.
問題有兩個, 一個是 js 本身採取的 rounding 策略是什麼,
另一個是 double(number) 用 byte 表達帶小數的極限.
浮點數是所有語言共同的地雷.
:
: --
: ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.71.20.209 (臺灣)
: ※ 文章網址: https://www.ptt.cc/Soft_Job/M.1605509212.A.E12
: 推 alihue: 一定是你不懂 js ,寫不好不要怪工具! 11/16 15:10
不懂的是 float, 目前的語法世界對於 float 確實都還有很多挑戰.
這樣躲雷是能躲到啥時呢
: → er230059: 這個問題在python不也一樣嗎? 11/16 15:11
噓 別說出來, 不然他們很尷尬的.
--
虛實之間的世界,反抗軍與啟蒙軍的交集
帶著 Android 去旅行、去發現
在身邊渾然不覺的 另一個世界。
全世界,都是我們的 足跡與遊樂場。
~ The world around you is not what it seems. ~ http://ingress.tw
--
...躲避球大師耶。你怎麼不說Javascript要解決這問題
要用什麼代價
常見的作法是往前拖到整數位再處理啊. 這在以前各語言都很常見喔.
※ 編輯: TonyQ (210.61.209.201 臺灣), 11/16/2020 16:15:24轉整數處理,當作字串,正則。敢問你提到python和cah
arp會這樣處理嗎?
拖整數位, 不是當作字串喔, 這你就誤會了. 而是不使用 byte 表達而已. 常見作法是往前拖 10^n 再加上 floor. 運算完再除以 10^n.
https://docs.microsoft.com/zh-tw/dotnet/api/system.decimal?view=net-5.0csharp 的 decimal 原理一樣是提到整數位處理啊, 紀錄 hi 位跟 lo 位. python 我沒研究, 但我相信方法不會有太大落差.
※ 編輯: TonyQ (210.61.209.201 臺灣), 11/16/2020 16:26:12會扯浮點數問題來攻擊特定語言一看就是計概沒學好
同意樓上
推樓樓上 這麼神奇 為什麼不去問神奇的海螺IEEE怎麼規範呢
所以你寫程式會看IEEE嗎?
遇到跟浮點數相關的問題就會去查 IEEE 了,例如那個進位問題
bigdecimal安定
沒IEEE754概念的人真的可以先不用說話==
有人說要懂IEEE才能寫JavaScript
我面試快要100多人有多少人真的懂IEEE?
10個裡面7-8個根本不懂,原理是什麼美人管,只會說引
用什麼套件和方法解決。
所以以後只要有人不懂IEEE就可以把人刷掉是嗎?
感謝給新的標準。
軟體版一堆人真的與現實偏差。
是要懂IEEE才能寫程式喔?一堆單元程式不能把這種例
外測出來嗎?
很多bug在單元測試就可以抓出分析誰還在跟你懂IEEE
你要怎麼刷人也跟大家沒關係吧
你這小便就像是會便秘一定要學會吃麻醬一樣
所以不吃麻醬就不會便秘 別意氣用事
是狡辯 sorry
啥洨 XD
※ 編輯: TonyQ (61.231.44.97 臺灣), 11/17/2020 10:09:083
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 就是照本宣科來,根本沒有你說的浮點數精確錯誤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,
24
[討論] VBA 適合新手學嗎?有學過JS跟PY 這兩個月開始學習VBA 剛開始覺得滿難的 因為語法比上面兩個複雜 還有變數型態上也是 種類繁多 像是數字就分為短整數 長整數 短浮點數 長浮點數17
[問卦] 台幣的幣值大小484全世界最剛好的?幣值太大者 如歐美 商品價格要多個小數點 幣值太小者 如日韓 商品價格要多幾個零 而台灣都是以整數位基準8
Re: [挖礦] 請問第11次減半週期的區塊獎勵原始碼在這 GetBlockSubsidy 是用來計算第 n 個區塊的區塊獎勵 在 src/amount.h 裡可以看到 CAmount 其實是 int64_t 也就是 64 位元的帶符號整數5
Re: [問卦] 萊劑含量10ppb和0.01ppm?不好意思 我數學不好 ppm 是 parts per million 百萬分之一 ppb 是 parts per billion 十億分之一 0.01ppm 是億分之一 10ppb 也是億分之一7
Re: [問卦] 圓周率裡面會有一組圓周率數字嗎?當然不會啊。 因為如果有一個長尾巴重複 假設是小數點以下的第n位開始是314159重複 那麼把pi乘上10的n次方後,小數部分就會剩下0.1415926.... 下式減上式後,小數部分減掉了乘為整數5
[請益] 限價如何訂的小問題先祝大家牛轉乾坤,牛年行大運賺大錢 台股已封關,我剛好來問個美股限價小問題 舉例來說 我發覺一檔股票 系統顯示 1年內最高100,最低10 (都沒有小數點) 然後盤中 線上顯示能看到小數點後3位3
[閒聊] CGSS可能出到200位偶像嗎CGSS現在有190位偶像 基本上是偶像番裡面最多偶像的 那未來有可能出到200位偶像湊整數嗎 不知道未來有沒有可能出台灣偶像 裡面都有香港偶像跟俄國混血偶像了