2017-06-22 68 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));