gpt4 book ai didi

javascript 和 VB.net 返回不正确的结果

转载 作者:行者123 更新时间:2023-11-30 07:47:03 25 4
gpt4 key购买 nike

我们注意到这在 javascript 和 VB.net 2.0 中都会发生。所以基本上在服务器端和客户端代码中。

基本上,如果您运行此等式 975328 - 153279.43,您将得到以下答案 822048.57000000007。

但是,如果您运行 975328 - 153279.4、975328 - 153279.433 或 975328 - 153279.5,一切都会正确返回。

对于为什么系统计算 975328 - 153279.43 的答案有 11 位小数,有什么想法吗?更不用说在小数点后 11 位加上 7,从而使等式答案不正确。

当然我知道我可以 trim ,将答案设置为适当的小数位等等,但我们更想知道为什么它会返回这样的答案。

切记,上面的证明只是将方程式输入到即时窗口中,从而消除了对象类型等变量。

感谢您的帮助,肯

最佳答案

出于同样的原因,您无法将 1/3 准确地表示为小数(以 10 为底)。您可以以 10 为基数输入数字,但所有算术运算都以 2 为基数(二进制)进行。因此,必须首先将以 10 为基数的值转换为以 2 为基数的值,并且您可能最终需要比标准 double 类型更多的位来表示它,如果它甚至可以准确地表示二进制数字的话。

调查此错误的另一个常见数字是 .1。当转换为二进制时,任何带有 .1 的十进制数在小数点后永远重复。因此,无法准确地用二进制表示该值。

在 VB.Net 中,您至少可以使用 Decimal 类型来处理此类事情。 IT 慢得多,,但它应该准确地处理这种计算。我不确定 javascript 解决方案是什么。

关于javascript 和 VB.net 返回不正确的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4206563/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com