2017-06-22 47 views
0

浮动显示错误假设你有一些数字显示是这样的:如何避免在JavaScript

使用“toFixed”可以简单地做的更好,但它不是我们所期望的。有没有什么简单的方法可以在下面的代码片段中按预期输出数字?

谢谢,

$('body').append('<p>Do nothing:</p>'); 
 

 
var a = 100-68.7; 
 
$('body').append('<p>' + a + '</p>'); 
 

 

 

 
var b = 100-68.52; 
 
$('body').append('<p>' + b + '</p>'); 
 

 

 
var c = 100-6; 
 
$('body').append('<p>' + c + '</p>'); 
 

 

 

 
$('body').append('<hr>'); 
 

 
$('body').append('<p>Using toFixed:</p>'); 
 

 
var a1 = 100-68.7; 
 
$('body').append('<p>' + a1.toFixed(2) + '</p>'); 
 

 

 

 
var b1 = 100-68.52; 
 
$('body').append('<p>' + b1.toFixed(2) + '</p>'); 
 

 

 
var c1 = 100-6; 
 
$('body').append('<p>' + c1.toFixed(2) + '</p>'); 
 

 

 

 

 

 
$('body').append('<hr>'); 
 

 
$('body').append('<p>Expected Result:</p>'); 
 

 
$('body').append('<p>31.3</p>'); 
 
$('body').append('<p>31.48</p>'); 
 
$('body').append('<p>94</p>');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

+0

如果你只是不喜欢在小数部分尾随零,那么你可以简单地调用toFixed后修剪它们关闭。为了使整体代码更加简洁,你可以将它变成它自己的一个小功能。 – CBroe

回答

1

返回的字符串周围只是包装在你的价值观“ parseFloat“

$('body').append('<hr>'); 
 

 
$('body').append('<p>Using toFixed:</p>'); 
 

 
var a1 = 100-68.7; 
 
$('body').append('<p>' + parseFloat(a1.toFixed(2)) + '</p>');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

+0

尝试在控制台中输入'parseFloat(1-4.6)'。 –

+1

?...解决方案仍然有效https://jsfiddle.net/cv0sz3fb/ – Matus

+0

不错的尝试通过使用parseFloat + toFixed。谢谢 –

0

$('body').append('<p>Do nothing:</p>'); 
 

 
var a = 100-68.7; 
 
$('body').append('<p>' + a + '</p>'); 
 

 

 

 
var b = 100-68.52; 
 
$('body').append('<p>' + b + '</p>'); 
 

 

 
var c = 100-6; 
 
$('body').append('<p>' + c + '</p>'); 
 

 

 

 
$('body').append('<hr>'); 
 

 
$('body').append('<p>Using toFixed:</p>'); 
 

 
var a1 = 100-68.7; 
 
$('body').append('<p>' + a1.toFixed(2).replace(/\.?0+$/, '') + '</p>'); 
 

 

 

 
var b1 = 100-68.52; 
 
$('body').append('<p>' + b1.toFixed(2).replace(/\.?0+$/, '') + '</p>'); 
 

 

 
var c1 = 100-6; 
 
$('body').append('<p>' + c1.toFixed(2).replace(/\.?0+$/, '') + '</p>'); 
 

 

 

 

 

 
$('body').append('<hr>'); 
 

 
$('body').append('<p>Expected Result:</p>'); 
 

 
$('body').append('<p>31.3</p>'); 
 
$('body').append('<p>31.48</p>'); 
 
$('body').append('<p>94</p>');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

USI ng将取代0它会完成。你可以看到。可能这将有助于你

更新

您可以检查Using toFixed:

0

使用parseFloat通过toFixed(2)

var a1 = 100-68.7; 
$('body').append('<p>' + parseFloat(a1.toFixed(2)) + '</p>'); 



var b1 = 100-68.52; 
$('body').append('<p>' + parseFloat(b1.toFixed(2))+ '</p>'); 


var c1 = 100-6; 
$('body').append('<p>' + parseFloat(c1.toFixed(2)) + '</p>'); 
0

您可以使用parseFloat()就像这样:

var numbers = 31.480000000000004; //this will be the numbers 
    numbers = numbers.toFixed(2); 
    console.log(parseFloat(numbers)); 

通过这个你可以固定为2只,那么你现在可以解析它浮动。

这应该是工作。

0

总是有Number.toLocaleString这使得可读代码。

const a = 100 - 68.7, 
 
     b = 100 - 68.52, 
 
     c = 100 - 6; 
 

 
const format = n => n.toLocaleString('en', { 
 
    maximumFractionDigits: 2, 
 
    useGrouping: false 
 
}); 
 

 
console.log([a, b, c].map(format));