PTT推薦

Re: [討論] 請大家聊聊 JavaScript的缺陷

看板Soft_Job標題Re: [討論] 請大家聊聊 JavaScript的缺陷作者
TonyQ
(得理饒人)
時間推噓 4 推:6 噓:2 →:17

※ 引述《accessdenied (存取違規)》之銘言:
: 標題: Re: [討論] 請大家聊聊 JavaScript的缺陷
: 時間: Mon Nov 16 14:46:50 2020
:
: https://i.imgur.com/inyE92c.jpg

圖 請大家聊聊 JavaScript的缺陷
:
: 有誰可以告訴我,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

--

※ PTT留言評論
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 210.61.209.201 (臺灣)
PTT 網址

samuel198811/16 16:14...躲避球大師耶。你怎麼不說Javascript要解決這問題

samuel198811/16 16:14要用什麼代價

常見的作法是往前拖到整數位再處理啊. 這在以前各語言都很常見喔.

※ 編輯: TonyQ (210.61.209.201 臺灣), 11/16/2020 16:15:24

samuel198811/16 16:16轉整數處理,當作字串,正則。敢問你提到python和cah

samuel198811/16 16:16arp會這樣處理嗎?

拖整數位, 不是當作字串喔, 這你就誤會了. 而是不使用 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

x12335611/16 17:02會扯浮點數問題來攻擊特定語言一看就是計概沒學好

newhandfun11/16 17:03同意樓上

jej11/16 19:54推樓樓上 這麼神奇 為什麼不去問神奇的海螺IEEE怎麼規範呢

gn0183833511/16 20:10所以你寫程式會看IEEE嗎?

art111/16 21:22遇到跟浮點數相關的問題就會去查 IEEE 了,例如那個進位問題

netburst11/17 01:16bigdecimal安定

splitline11/17 01:32沒IEEE754概念的人真的可以先不用說話==

gn0183833511/17 06:35有人說要懂IEEE才能寫JavaScript

gn0183833511/17 06:35我面試快要100多人有多少人真的懂IEEE?

gn0183833511/17 06:3510個裡面7-8個根本不懂,原理是什麼美人管,只會說引

gn0183833511/17 06:35用什麼套件和方法解決。

gn0183833511/17 06:35所以以後只要有人不懂IEEE就可以把人刷掉是嗎?

gn0183833511/17 06:35感謝給新的標準。

gn0183833511/17 06:35軟體版一堆人真的與現實偏差。

gn0183833511/17 06:37是要懂IEEE才能寫程式喔?一堆單元程式不能把這種例

gn0183833511/17 06:37外測出來嗎?

gn0183833511/17 06:38很多bug在單元測試就可以抓出分析誰還在跟你懂IEEE

onlyeric2311/17 08:48你要怎麼刷人也跟大家沒關係吧

jej11/17 08:49你這小便就像是會便秘一定要學會吃麻醬一樣

jej11/17 08:49所以不吃麻醬就不會便秘 別意氣用事

jej11/17 08:51是狡辯 sorry

啥洨 XD

※ 編輯: TonyQ (61.231.44.97 臺灣), 11/17/2020 10:09:08