如何修复0.3+;Javascript中的0.6=0.899999999?
当添加两个浮点值时,我将得到如下结果:如何修复0.3+;Javascript中的0.6=0.899999999?,javascript,math,Javascript,Math,当添加两个浮点值时,我将得到如下结果: 0.3+0.6 = 0.89999999999 我知道发生了什么事。在C#中,我们可以使用十进制,但在Javascript中,如何修复它?基本上是相同的方式,但Javascript没有内置类似于十进制的数字类型。如果搜索,您可以找到各种实现,例如(只是一个示例,不是推荐)。使用BigNumber库。例如,它支持bignumbers(由提供动力) 使用math.js的表达式解析器,您可以使用bignumbers键入自然表达式: // configure
0.3+0.6 = 0.89999999999
我知道发生了什么事。在C#中,我们可以使用十进制,但在Javascript中,如何修复它?基本上是相同的方式,但Javascript没有内置类似于十进制的数字类型。如果搜索,您可以找到各种实现,例如(只是一个示例,不是推荐)。使用BigNumber库。例如,它支持bignumbers(由提供动力) 使用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
数学
如果只是表示问题,请使用
.toFixed
将浮点数格式化为字符串。
MathUtils = {
roundToPrecision: function(subject, precision) {
return +((+subject).toFixed(precision));
}
};
console.log(MathUtils.roundToPrecision(0.3 + 0.6, 1)) // 0.9;