PTT
Submit
Submit
选择语言
正體中文
简体中文
PTT
Soft_Job
Re: [讨论] 请大家聊聊 JavaScript的缺陷
楼主:
accessdenied
(存取违规)
2020-11-17 12:25:36
你完全搞不清楚状况喔。
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 一样四舍五入的数字,让我知道
算救贫道一命。
感恩
楼主:
accessdenied
(存取违规)
2020-11-17 12:28:00
PS:“银行家舍入”是IEEE 规定的舍入标准。因此所有符合IEEE标准的语言都是采用这一算法的。看来“所有语言“这件事并不包含 js
作者:
superpai
(超级白)
2020-11-17 12:39:00
你可以试试用你的函数round 1.035是1.03还是1.04吗?
作者:
x000032001
(版废了该走了)
2020-11-17 12:41:00
可是toFixed是回传string耶 type就不一样了怎么比
作者:
superpai
(超级白)
2020-11-17 12:42:00
我是说用AwayFromZero设定
楼主:
accessdenied
(存取违规)
2020-11-17 12:45:00
https://i.imgur.com/BS0fx5S.jpg
1.035 有什么特别含意吗?如果用AwayFromZero 就会是1.04fuck! 还真的是string 耶,什么鬼啦!你不说我还没发现
作者:
superpai
(超级白)
2020-11-17 12:51:00
我自己没有dotnet所以在dotnetfiddle.net算1.035 awayfromzero的结果是1.03 所以想确认一下
楼主:
accessdenied
(存取违规)
2020-11-17 13:14:00
@superpai 你是对的,1.035 awayfromzero 有问题
继续阅读
Re: [讨论] 请大家聊聊 JavaScript的缺陷
TonyQ
[心得][英文] 高中6K字-108版
AmosYang
Re: [讨论] 请大家聊聊 JavaScript的缺陷
accessdenied
Re: [讨论] 请大家聊聊 JavaScript的缺陷
CoNsTaR
Re: [请益] 比物件导向更先进的程式设计思想?
jackypan1989
Re: [请益] 比物件导向更先进的程式设计思想?
ericwang1017
Re: [讨论] 请大家聊聊 JavaScript的缺陷
TonyQ
Re: [讨论] 请大家聊聊 JavaScript的缺陷
accessdenied
Re: [讨论] 请大家聊聊 JavaScript的缺陷
TonyQ
Re: [讨论] 请大家聊聊 JavaScript的缺陷
as30385438
Links
booklink
Contact Us: admin [ a t ] ucptt.com