作者TonyQ (得理饒人)
看板Soft_Job
標題Re: [討論] 請大家聊聊 JavaScript的缺陷
時間Mon Nov 16 15:34:44 2020
※ 引述《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://webptt.com/m.aspx?n=bbs/Soft_Job/M.1605509212.A.E12.html
: 推 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
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 210.61.209.201 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Soft_Job/M.1605512086.A.F71.html
1F:→ samuel1988: ...躲避球大師耶。你怎麼不說Javascript要解決這問題 11/16 16:14
2F:→ samuel1988: 要用什麼代價 11/16 16:14
常見的作法是往前拖到整數位再處理啊. 這在以前各語言都很常見喔.
※ 編輯: TonyQ (210.61.209.201 臺灣), 11/16/2020 16:15:24
3F:→ samuel1988: 轉整數處理,當作字串,正則。敢問你提到python和cah 11/16 16:16
4F:→ samuel1988: arp會這樣處理嗎? 11/16 16:16
拖整數位, 不是當作字串喔, 這你就誤會了. 而是不使用 byte 表達而已.
常見作法是往前拖 10^n 再加上 floor. 運算完再除以 10^n.
https://docs.microsoft.com/zh-tw/dotnet/api/system.decimal?view=net-5.0
csharp 的 decimal 原理一樣是提到整數位處理啊, 紀錄 hi 位跟 lo 位.
python 我沒研究, 但我相信方法不會有太大落差.
※ 編輯: TonyQ (210.61.209.201 臺灣), 11/16/2020 16:26:12
5F:推 x123356: 會扯浮點數問題來攻擊特定語言一看就是計概沒學好 11/16 17:02
6F:推 newhandfun: 同意樓上 11/16 17:03
7F:推 jej: 推樓樓上 這麼神奇 為什麼不去問神奇的海螺IEEE怎麼規範呢 11/16 19:54
8F:噓 gn01838335: 所以你寫程式會看IEEE嗎? 11/16 20:10
9F:推 art1: 遇到跟浮點數相關的問題就會去查 IEEE 了,例如那個進位問題 11/16 21:22
10F:推 netburst: bigdecimal安定 11/17 01:16
11F:推 splitline: 沒IEEE754概念的人真的可以先不用說話== 11/17 01:32
12F:→ gn01838335: 有人說要懂IEEE才能寫JavaScript 11/17 06:35
13F:→ gn01838335: 我面試快要100多人有多少人真的懂IEEE? 11/17 06:35
14F:→ gn01838335: 10個裡面7-8個根本不懂,原理是什麼美人管,只會說引 11/17 06:35
15F:→ gn01838335: 用什麼套件和方法解決。 11/17 06:35
16F:→ gn01838335: 所以以後只要有人不懂IEEE就可以把人刷掉是嗎? 11/17 06:35
17F:→ gn01838335: 感謝給新的標準。 11/17 06:35
18F:→ gn01838335: 軟體版一堆人真的與現實偏差。 11/17 06:35
19F:→ gn01838335: 是要懂IEEE才能寫程式喔?一堆單元程式不能把這種例 11/17 06:37
20F:→ gn01838335: 外測出來嗎? 11/17 06:37
21F:→ gn01838335: 很多bug在單元測試就可以抓出分析誰還在跟你懂IEEE 11/17 06:38
22F:→ onlyeric23: 你要怎麼刷人也跟大家沒關係吧 11/17 08:48
23F:噓 jej: 你這小便就像是會便秘一定要學會吃麻醬一樣 11/17 08:49
24F:→ jej: 所以不吃麻醬就不會便秘 別意氣用事 11/17 08:49
25F:→ jej: 是狡辯 sorry 11/17 08:51
啥洨 XD
※ 編輯: TonyQ (61.231.44.97 臺灣), 11/17/2020 10:09:08