作者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/cn.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/cn.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