javascript - 为什么 JavaScript 中 143.55 等于 143.54999999999?

标签 javascript math floating-point

Possible Duplicate:
Is JavaScript’s Math broken?

我正在 JavaScript 中运行一些非常基本的函数来尝试将 float 转换为货币。例如:

var t = Array(15.90, 15.95, 15.95);
var x = t[0];
if(x%1 == 0)
output += ".0";
if(x%.1 == 0)
output += "0";

输出应为 0 ,但由于某种原因,在某些情况下,这不起作用,当我将 x 的值回显到控制台时,我会得到 15.8999999999915.900000000001 。为什么?

感谢您的帮助。

最佳答案

您只需 toFixed() 即可打印出您想要的小数位数:

var priceString = price.toFixed(2);

这将始终为您提供一个格式为小数点后两位的数字。

我知道这里很多人会告诉您不要使用浮点进行基于货币的计算。然而,我发现 float 的精度对于合理的美元金额来说已经足够了。除非你将大金额乘以小百分比,否则你不会损失一分钱。例如:1000000 * .0000001 = .099999999

关于javascript - 为什么 JavaScript 中 143.55 等于 143.54999999999?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13168954/

相关文章:

javascript - 如何继续循环直到我的变量等于用户输入? JavaScript

python - 在一组固定的元素上生成特定秩的 "random"矩阵

go - 如何在 Golang 中将 Math.Pow 与整数一起使用

python - 具有 dtype float 的 Numpy n 元组数组

javascript - Facebook JS SDK 要求太多权限

javascript - 双驱动 onblur 事件

c++ - 获取单个平面中两个 vector 之间角度的有效方法?

java - long值如何适应Java中的float数据类型而不损失精度

javascript - cufon LTR 转 RTL

javascript - htaccess rewriteRule,CSS 和 JS 文件调用整个网页的 html 标记