![](/img/trans.png)
[英]Delete digits after two decimal point not round number in javascript?
[英]How can I round a float such that there are only two trailing digits after the decimal point?
我有一個浮點數,例如137.57667565656,但我想四舍五入,使得小數點后只有兩個尾隨數字,例如新的浮點數將是137.58。
到目前為止,我已經嘗試過了:
(Math.round((value*100)/100)).toFixed(2).toString();
但不幸的是,它使我的價值接近137.00。 它將小數位添加為零,為什么呢?
如何實現以上目標?
您期望什么?
(value*100)/100
簡單地返回value的原始值 ,所以
Math.round((value*100)/100))
等同於:
Math.round(value)
然后,您將擁有:
Math.round(value).toFixed(2).toString();
因此,將值四舍五入為整數, toFixed將添加兩個小數位並返回一個字符串,因此toString部分是多余的。 如果希望將值四舍五入到小數點后四位,則:
value.toFixed(4)
將做的工作:
var x = 137.57667565656;
console.log(x.toFixed(4)); // 137.5767
如果您想將其四舍五入而將其表示為4,則:
Number(x.toFixed(2)).toFixed(4) // 137.5800
添加兩個零是因為在執行Math.round
之前,您需要執行以下操作:
如果number的小數部分為0.5或更大,則參數將舍入為下一個更高的整數。 如果number的小數部分小於.5,則將參數舍入為下一個較小的整數。
您需要刪除Math.round
:
(value*100)/100).toFixed(4).toString();
在JSFiddle上查看: http : //jsfiddle.net/0fe5mm95/
編輯顯然我誤解了這個問題。 當我嘗試回答時(至少在標題中)是有效數字。
這個答案與Wikipedia的有效數字定義一致 。 它通過三個步驟解決了任意數量有效數字的一般問題:
-1<x<1
,則為負,例如12345為5,或者0.01為-2) 就這樣。 除零(無有效數字)外。 (當我要求輸入三個有效數字時,我選擇了“ 0.00”,但是0或0.0也可以)
function toStringWithSignificantDigits( x, len ){
if(x==0) return x.toFixed(len-1); // makes little sense for 0
var numDigits = Math.ceil(Math.log10(Math.abs(x)));
var rounded = Math.round(x*Math.pow(10,len-numDigits))*Math.pow(10,numDigits-len);
return rounded.toFixed(Math.max(len-numDigits,0));
}
function testIt(x,len){
console.log( "format " + x + " to " + len + " significant digits: " + toStringWithSignificantDigits(x,len));
}
testIt(12.345,6); // 12.3450
testIt(12.345,5); // 12.345
testIt(12.345,4); // 12.35
testIt(12.345,3); // 12.3
testIt(12.345,2); // 12
testIt(12.345,1); // 10
testIt(0.012345,7); // 0.01234500
testIt(0.012345,6); // 0.0123450
testIt(0.012345,5); // 0.012345
testIt(0.012345,4); // 0.01235
testIt(0.012345,3); // 0.0123
testIt(0.012345,2); // 0.012
testIt(0.012345,1); // 0.01
testIt(0,3); // 0.00, zero is a special case, as it has no significant digit
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.