【问题标题】:Float sum with javascript [duplicate]用javascript计算浮点数[重复]
【发布时间】:2012-09-12 17:26:39
【问题描述】:

可能重复:
Is JavaScript's Math broken?

我正在使用 javascript 计算几个浮点值的总和......我注意到了一件以前从未见过的奇怪事情。执行此代码:

parseFloat('2.3') + parseFloat('2.4')

我得到4.699999999999999

那么...我该怎么做才能获得正确的值? (假设这是不正确的......)

【问题讨论】:

  • 我并不是说这会对这个问题有所帮助。但我总是喜欢在这种时候指出this article
  • 为什么你认为浮点运算是精确的?说真的,关于浮点数不精确的问题发布得异常频繁,我们应该找出原因并采取一些措施。那么,有人告诉你浮点运算是精确的吗?你只是假设吗?你知道你为什么这么认为吗?如果您考虑一下,您将如何实现浮点运算?如果您实施它会准确吗?怎么样?
  • 在搜索这个时,我看不到这个问题是如何重复的 - 在标记为重复的问题上问题没有得到解决,而且在整个 SO 中,我还没有找到合适的解决方案对于同样的问题。

标签: javascript math floating-point


【解决方案1】:

一旦您阅读了What Every Computer Scientist Should Know About Floating-Point Arithmetic 的内容,您就可以使用.toFixed() 函数:

var result = parseFloat('2.3') + parseFloat('2.4');
alert(result.toFixed(2));​

【讨论】:

  • 简单用parseFloat((2.3 + 2.4).toFixed(10))Here就是解释
  • 注意toFixed(fractionDigits)返回的是字符串
  • 这不是真正的解决方案,而我的数字不同 1+1.2+1.25+4.5=???
【解决方案2】:
(parseFloat('2.3') + parseFloat('2.4')).toFixed(1);

我想它会给你解决方案

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 2023-04-03
    • 2012-03-10
    • 1970-01-01
    • 1970-01-01
    • 2019-11-21
    相关资源
    最近更新 更多