【发布时间】:2014-09-27 22:09:34
【问题描述】:
当添加两个浮点值时,我会得到类似的东西:
0.3+0.6 = 0.89999999999
我知道发生了什么。在 C# 中我们可以使用小数,但在 Javascript 中,如何解决?
【问题讨论】:
-
如果只是表示问题,使用
.toFixed将浮点数格式化为字符串。
标签: javascript math
当添加两个浮点值时,我会得到类似的东西:
0.3+0.6 = 0.89999999999
我知道发生了什么。在 C# 中我们可以使用小数,但在 Javascript 中,如何解决?
【问题讨论】:
.toFixed将浮点数格式化为字符串。
标签: javascript math
MathUtils = {
roundToPrecision: function(subject, precision) {
return +((+subject).toFixed(precision));
}
};
console.log(MathUtils.roundToPrecision(0.3 + 0.6, 1)) // 0.9;
【讨论】:
使用 BigNumber 库。例如math.js 支持大数字(由decimal.js 提供支持)。
使用 math.js 的表达式解析器,您可以使用 bignumbers 键入自然表达式:
// configure math.js to use bignumbers
math.config({number: 'bignumber'});
// evaluate an expression
math.eval('0.3 + 0.6'); // returns a BigNumber with value 0.9
【讨论】:
基本上相同,但 JavaScript 没有内置类似 decimal 的数字类型。如果您搜索,您可以找到各种实现,例如 big.js(只是一个示例,不是推荐)。
【讨论】: