2011-07-08 62 views
1

当然是一个愚蠢的问题,请原谅我。我的客户希望十进制数字以五位数字显示。例如:100.34或37.459。我正在用val.toPrecision (5);完成此项工作;然而,当我的数字变得非常小时,我就不再得到我想要的东西。例如,如果我的号码是0.000347,它显示0.00034700。现在,我明白为什么这样做了,但我不知道如何让它显示0.0003。有什么想法吗?Javascript编号格式

+2

退房http://stackoverflow.com/questions/610406/javascript-printf-string-format,首先回答问题的sprintf的链接 – mrk

回答

2

我们的问题是与数字莱s明显低于1。因此,抓住他们,并分别处理它们

function SetPrecisionToFive(n){ 
    return (n > 1) ? n.toPrecision (5) : (Math.round(n * 1e4)/1e4).toString(); 
} 
1

您可以使用toFixed方法来完成此操作。例如:(0.000347).toFixed(4)

+0

因为他想将toFixed改变100.34298至100.34 ? –

+1

jQuery for'toFixed',你在开玩笑吗? – katspaugh

+0

为什么你需要使用jQuery来使用'toFixed'? –

5
Math.round(0.000347 * 1e4)/1e4 

或用toFixed

Number.prototype.toNDigits = function (n) { 
    return (Math.abs(this) < 1) ? 
     this.toFixed(n - 1) : 
     this.toPrecision(n); 
}; 

http://jsfiddle.net/HeQtH/6/

-1

的JavaScript toFixed()函数将截断小编号,以一个固定的小数精度,例如:

var num = .0000350; 
var result = num.toFixed(5); // result will equal .00003 
+0

现在做'(100.34).toFixed(5)'。 – katspaugh

+0

@katspaugh此代码片段将是有条件的......并不意味着涵盖所有情况 – Kyle