|
|
1
Nikola Lukic
2 年前
看看
Dealing with float precision in JS
这是我的解决方案:
console.log( parseFloat((.6+.6+.6).toFixed(2)) )
var a = 0.6;
var b = 0.6;
var c = 0.6;
var R = parseFloat( (a + b + c).toFixed(2) );
console.warn("Result :", R)
function sumFloats (items) {
var R = 0;
for (var x = 0;x < items.length;x++) {
console.warn(">>: ", items[x]);
R += parseFloat( (items[x]).toFixed(2) );
}
R = parseFloat(R.toFixed(2));
console.warn("Result from function: ", R);
return R;
}
var a = 0.6;
var b = 0.6;
var c = 0.6;
var ResultFromFunc = sumFloats ([0.6, 0.6, 0.6]);
var ResultFromFunc2= sumFloats ([a, b, c]);
到固定(dec)。将返回字符串,但格式良好,然后解析为浮点数以再次获取数字。
更新:
function sumFloats (items) {
var R = 0;
for (var x = 0;x < items.length;x++) {
R += parseFloat( (items[x]).toFixed(2) );
}
R = parseFloat(R.toFixed(2));
return R;
}
var a = 33.4;
var b = 33.3;
var c = 33.3;
console.log( "a + b + c = ", a + b + c )
console.log( "a + c + b = ", a + c + b )
console.log( "c + b + a = ", c + b + a )
console.log( "c + a + b = ", c + a + b )
console.log( "b + c + a = ", b + c + a )
console.log( "b + a + c = ", b + a + c )
console.log( "sum -> ", sumFloats([a,b,c]) )
console.log( "sum -> ", sumFloats([a,c,b]) )
console.log( "sum -> ", sumFloats([c,b,a]) )
console.log( "sum -> ", sumFloats([c,a,b]) )
console.log( "sum -> ", sumFloats([b,c,a]) )
console.log( "sum -> ", sumFloats([b,a,c]) )
|