如何避免JavaScript中的浮点显示错误
假设您有一些数字要显示如下:如何避免JavaScript中的浮点显示错误,javascript,Javascript,假设您有一些数字要显示如下: var numbers = 31.480000000000004; //this will be the numbers numbers = numbers.toFixed(2); console.log(parseFloat(numbers )); 使用“toFixed”可以简单地使它变得更好,但这并不是预期的结果。有没有什么简单的方法可以输出下面这段代码中预期的数字 谢谢 $('body')。追加('p>什么也不做:'); var a=10
var numbers = 31.480000000000004; //this will be the numbers
numbers = numbers.toFixed(2);
console.log(parseFloat(numbers ));
使用“toFixed”可以简单地使它变得更好,但这并不是预期的结果。有没有什么简单的方法可以输出下面这段代码中预期的数字
谢谢
$('body')。追加('p>什么也不做:');
var a=100-68.7;
$('body')。追加(''+a+'');
var b=100-68.52;
$('body')。追加('p>'+b+'');
var c=100-6;
$('body')。追加('p>'+c+'');
$('body')。追加('hr>');
$('body')。追加('p>使用toFixed:');
var a1=100-68.7;
$('body').append(''+a1.toFixed(2)+'');
var b1=100-68.52;
$('body').append(''+b1.toFixed(2)+'');
var c1=100-6;
$('body').append(''+c1.toFixed(2)+'');
$('body')。追加('hr>');
$('body')。追加('预期结果:');
$('body')。追加('p>31.3');
$('body')。追加('31.48');
$('body')。追加('p>94')代码>
$('body')。追加('p>什么也不做:');
var a=100-68.7;
$('body')。追加(''+a+'');
var b=100-68.52;
$('body')。追加('p>'+b+'');
var c=100-6;
$('body')。追加('p>'+c+'');
$('body')。追加('hr>');
$('body')。追加('p>使用toFixed:');
var a1=100-68.7;
$('body')。追加(''+a1.toFixed(2)。替换(/\.?0+$/,'')+'');
var b1=100-68.52;
$('body')。追加(''+b1.toFixed(2)。替换(/\.?0+$/,'')+'');
var c1=100-6;
$('body')。追加(''+c1.toFixed(2)。替换(/\.?0+$/,'')+'');
$('body')。追加('hr>');
$('body')。追加('预期结果:');
$('body')。追加('p>31.3');
$('body')。追加('31.48');
$('body')。追加('p>94')代码>
在toFixed(2)
返回的字符串周围使用parseFloat
var a1=100-68.7;
$('body').append(''+parseFloat(a1.toFixed(2))+'');
var b1=100-68.52;
$('body').append(''+parseFloat(b1.toFixed(2))+'');
var c1=100-6;
$('body').append(''+parseFloat(c1.toFixed(2))+'');
只需将您的值包装在“parseFloat”中
$('body')。追加('hr>');
$('body')。追加('p>使用toFixed:');
var a1=100-68.7;
$('body').append(''+parseFloat(a1.toFixed(2))+'')代码>
您可以像这样使用parseFloat()
:
var numbers = 31.480000000000004; //this will be the numbers
numbers = numbers.toFixed(2);
console.log(parseFloat(numbers ));
这样你就可以固定到2,然后你就可以解析它了
这应该是可行的。总有一些方法可以让代码可读
常数a=100-68.7,
b=100-68.52,
c=100-6;
const format=n=>n.toLocaleString('en'{
最大分数位数:2,
使用分组:false
});
log([a,b,c].map(格式))代码>如果您只是不喜欢小数部分后面的零,那么您可以在调用toFixed后简单地将其删除。为了使整个代码更加简洁,您可以将其转换为自己的一个小函数。尝试在控制台中输入parseFloat(1-4.6)
。使用parseFloat+toFixed进行了很好的尝试。谢谢