Re: [讨论] 请大家聊聊 JavaScript的缺陷

楼主: kusakawa (草川)   2020-11-17 13:17:02
※ 引述《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
作者: CoNsTaR ((const *))   2020-11-17 13:24:00
再次证明不能写 type annotations 造成的麻烦喔对我知道,一定是因为对语言不够熟,大家都该先把标准读完再来对吧作个 round 还要先读标准,真是 low cost 啊写个 type 多几个字真是没有人想承担的 high cost 啊
作者: as30385438 (LCT)   2020-11-17 13:31:00
原文是想重现toFixed,而不是拿他处理概述吧
作者: samuel1988 (小羊快跑啊)   2020-11-17 13:59:00
是你搞混了
作者: art1 (人,原来不是人)   2020-11-17 17:51:00
看不出哪里搞混了
作者: johnidfet   2020-11-18 14:06:00
居然把read standard当作cost...前端果然是雷包很多的环境
作者: mrbigmouth (大嘴先生)   2020-11-18 17:22:00
我没把标准读熟就跑去写程式然后写错 都是程式的错
作者: jobintan (Robin Artemstein)   2020-11-19 07:45:00
应该是人的问题才导致程式出错。

Links booklink

Contact Us: admin [ a t ] ucptt.com