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

楼主: TonyQ (自立而后立人。)   2020-11-17 13:07:38
※ 引述《accessdenied (存取违规)》之铭言:
: 你完全搞不清楚状况喔。
: dotnet 的 Math.Round() 默认是 四舍六入(五遇到前面为基数才进位)的设计,也就是
: 银行家舍入法,也就是第三个参数为 ToEven 模式,我指定 AwayFromZero 是因为想走四
: 舍五入。
: 拔掉这个,走四舍六入也行,dotnet 就是照本宣科来,根本没有你说的浮点数精确错误
: 的问题。
: https://i.imgur.com/u1WLSnh.jpg
: 上图的结果可以明确显示, JS 的 toFixed() 这烂东西跟 dotnet 根本没有可比性。js
: 完全是胡来的。
: 你可以参考这篇文章了解这个机制:
: https://www.itread01.com/p/1421856.html
: 顺便求助一下啦,我为何一直战 js round 这件事?因为我需要一个实作可以让 dotnet
: 算出 js toFixed() 一样结果的 function,但越是研究 toFixed()呈现的结果,越是靠
: 北。
: 如果知道哪边有现成的实作,可以让 dotnet 算出跟 js 一样四舍五入的数字,让我知道
: 算救贫道一命。
: 感恩
其实我上一篇已经有提到 Rounding mode 的选择是关键了了,
然后那个不叫四舍六入......
另外 tofixed 又谁跟你说他是四舍五入了....
他是用浮点数的定位表示法(fixed-point notation) 计算的, 详细实作有点囉嗦,
自己翻论文.
你的 csharp 好棒棒, 你就没想过我上一篇是自己跑过才回的吗
一定要把脸凑上来让我打吗 XD
dotnet framework 4.7.1/csharp 7.3
https://imgur.com/JddrvWW
另外如果要稳定的计算, 特别是牵扯到钱的,
都建议用 decimal , 会比较安全一点.
https://imgur.com/ZhQ5iQW
各位客官, 这两篇真的不是我的锅啊,
我只是回应一个不知道浮点数有多险恶的人而已.
另外如果想让 js 在浮点数处理写得更稳定一点, 有 decimal.js 可以用.
前文推文就提过, 此处不再赘述.
作者: CoNsTaR ((const *))   2020-11-17 13:27:00
处理个浮点数都要研究要用什么 lib,真是 low cost 啊我喜欢
作者: petercoin (彼得币)   2020-11-17 14:02:00
这一整串看下来,最佳解是不是不要碰js...
作者: thund (天下御免)   2020-11-17 14:11:00
但写前端目前来说不可能不碰JS的XD
作者: petercoin (彼得币)   2020-11-17 14:14:00
只能说还好我不是前端的XD
作者: testPtt (测试)   2020-11-17 15:15:00
微软派来的可以不碰又能解决问题 不过几乎都是全端
作者: BoXeX (心爱骑士团异端审判骑士)   2020-11-17 18:32:00
微软那种单一大公司推的技术死太多个了 尤其是这种不能无痛转换到其他技术的 危险强烈建议本科的在台湾不要当前端当了代表你那四或六年完全白费了
作者: testPtt (测试)   2020-11-17 19:54:00
微软这几年就靠IDE打趴各家了 台湾学校只会更多教这家的
作者: jej (晃奶大馬桶)   2020-11-17 20:51:00
目前在各大装置上还是主流阿 用js搞RWD才是邪魔歪道吧说到这个用浏览器当FB, IG 让我成功戒掉FB和IG 所以你觉得呢

Links booklink

Contact Us: admin [ a t ] ucptt.com