我有一個關於toFixed()函數的問題。如果我有漂浮物,例如 - 3.123123423 and 。如何將它輸出到帶有toFixed(2)的輸入框,以便輸入框值爲3.12和。我的意思是如果該值爲整數,我想它輸出不帶尾隨.00 :)Javascript to fixed功能
回答
至於有整數之間沒有區別的,在JavaScript中漂浮,這是我quick'n'dirty方法:
theNumber.toFixed(2).replace(".00", "");
或者一些通用:
myToFixed = function (n, digits) {
digits = digits || 0;
return n.toFixed(digits).replace(new RegExp("\\.0{" + digits + "}"), "");
}
myToFixed(32.1212, 2) --> "32.12"
myToFixed(32.1212, 0) --> "32"
myToFixed(32, 2) --> "32"
myToFixed(32.1, 2) --> "32.10"
非常髒(而且非常快。)... +1 –
不適用於3.005(意味着它是一個整數)。 – Mark
function toFixed0d(x, d)
{
if(Math.round(x) == x)
{
return x.toString();
}else
{
return x.toFixed(d);
}
}
toFixed0d(3.123123423, 2) = "3.12"
toFixed0d(0, 2) = "0"
你不需要Math.round():
var toFixed = function(val, n) {
var result = val.toFixed(n);
if (result == val)
return val.toString();
return result;
}
toFixed(3.123, 2) --> "3.12"
toFixed(3, 2) --> "3"
請注意,toFixed()是broken in IE並且通常不被依賴。令人討厭但精確四捨五入的替代功能。
如果是其他瀏覽器,結果可能會有所不同。所以,請訪問以下鏈接How to write a prototype for Number.toFixed in JavaScript?
這裏是我想出了思考這個同樣的問題,一小會兒後,一個功能:,這個函數將返回如下
function toFixed (number, n) {
return parseFloat(number.toFixed(n));
}
按照這樣一個問題:
toFixed(3.123123423, 2);
> 3.12
toFixed(0, 2);
> 0
toFixed(3.1, 2);
> 3.1
toFixed(3.005, 2);
> 3
toFixed(3.005, 3);
> 3.005
toFixed(3.0500, 4);
> 3.05
請注意,對於JavaScript的Number
對象,toFixed
方法實際上會返回String
。上述toFixed
函數將返回一個Number
。如果你寧願有一個String
然後用下面的代替:
function toFixed (number, n) {
return parseFloat(number.toFixed(n)).toString();
}
Number.toFixed產生一些奇怪的數學成績,給你你要的,不管你需要與否的小數位數。
Math.round在數學上是正確的,但不允許您指定精度。
這裏有一個數學上正確的函數(忽略浮點錯誤)並且給你你想要的東西。
var roundToPlusInfinity = function(n, fd) {
var scale = Math.pow(10, fd),
rounded = fd ? Math.floor((n * scale + 0.5))/scale :
Math.round(n);
return rounded.toString();
};
的算法爲:擴大,使得要輸入的數字是在小數點的左邊,添加0.5(使得> = 0.5在第一微不足道地方引起的整數部分的增量),截斷(不是圓的!)並縮小。浮點錯誤有可能蔓延,但它比可憐的toFixed函數好看得多。
測試出來:由於浮點錯誤的可能性
roundToPlusInfinity(5.53335, 4); // "5.3334"
roundToPlusInfinity(-9999.95, 1); // "-9999.9"
roundToPlusInfinity(3.00015, 3); // "3"
,規模下降可能會給像「3.00000000001」的結果,這是煩人。像這樣的東西應該照顧它。
var trimFraction = function(s, fd) {
var splitPoint = s.indexOf('.');
if (splitPoint === -1) {
return s;
}
var f = s.substring(splitPoint + 1, s.length),
i = s.substring(0, splitPoint);
if (f.length > fd) {
f = f.substring(0, fd).replace(/0+$/, "");
}
if (f) {
return i + '.' + f;
}
return i;
};
trimFraction("3.1000000001", 2); // "3.1"
你還沒有明確你想要的舍入算法。向正無窮大舍入是你在學校學到的四捨五入,在這裏舍入> = .5 向上(即朝向正無窮大)。我相信在會計中,正確的舍入算法(至少在瑞士和阿根廷以外)遠離零。很簡單:
var roundAwayFromZero = function(n, fd) {
var ret = roundToPlusInfinity(Math.abs(n), fd);
return (n < 0) ? '-' + ret : ret;
};
roundAwayFromZero(-9999.95, 1); // "-10000"
如果結果是向人展示,Intl.NumberFormat是一種可能性,因爲你可以同時指定的最小和小數最大位數。在撰寫本文時,它並沒有得到廣泛的支持,並假設Chrome正確實施了規範,使用與固定相同的不可穿透和明顯的錯誤截斷算法。有趣的是,「貨幣」風格使用roundAwayFromZero(或者如果貨幣代碼是「CHF」,這是一個很好的接觸,則輪到一半)。
- 1. Javascript to fixed fixed in java
- 2. fixed divs to fluid div
- 3. Full height div to fixed
- 4. JQuery to Javascript點擊功能
- 5. Html position fixed bugs screen to right
- 6. bootstrap static to fixed navbar jumping on scroll
- 7. Javascript out功能
- 8. 功能的Javascript
- 9. javascript性能功能
- 10. Javascript to to padding-bottom
- 11. 功能的JavaScript
- 12. javascript setAttribute功能
- 13. JavaScript功能類
- 14. Javascript/Raphael功能
- 15. 與JavaScript功能
- 16. 功能在javascript
- 17. 功能的JavaScript
- 18. 玩Javascript功能
- 19. 以JavaScript功能
- 20. thickbox javascript功能
- 21. 在JavaScript功能
- 22. 功能在javascript
- 23. Javascript PopUp功能
- 24. JavaScript Cubing功能
- 25. JavaScript與「功能」
- 26. 功能(JavaScript)的
- 27. 的Javascript功能
- 28. 功能在javascript
- 29. 爲Javascript功能
- 30. javascript功能
您可能想指定3.1和3.005要發生的事情。 – Mark
'parseFloat((value).toFixed(2))' –