[英]can any one suggest a good math function in javascript to round integer?
我必须将值从2.3456789
到2.345
。
之后.
必须有三个数字只剩下应该删除
使用Math.round()
。
这将四舍五入到小数点后 3 位。
var result=Math.round(2.3456789*1000)/1000 //returns 2.345
实际上,将任何数字四舍五入到小数点x
的公式是:
1) 将原始数字乘以10^x (10 to the power of x)
。
2) 将Math.round()
应用于结果。
3) 将结果除以10^x
。
Javascript 1.5+ 引入了Number.toFixed(n)和Number.toPrecision(n) - 根据您的需要选择一个。
Number.toFixed()允许您指定小数点后的位数(必要时填充)。
(2.3456789).toFixed(3) = "2.346"
(3).toFixed(3) = "3.000"
Number.toPrecision()让您指定有效数字的数量。
(2.3456789).toPrecision(4) = "2.346"
有value.toFixed(3)
,但会四舍五入到 2.346。
如果你真的不想四舍五入,你可以只使用parseInt(value * 1000) / 1000
。
您可能需要先确保 value 是一个数字:
value = new Number(value)
现在,如果value
是用户输入,那么它现在可能是NaN
(不是数字)。
你不能做if(value == NaN)
来检查, NaN
永远不等于任何东西(甚至不等于它本身),你必须使用isNaN(value)
function。
试试Math.floor(2.3456789 * 1000) / 100
。 这可能会导致浮点错误,因此最好通过字符串函数来完成
var parts = String(2.3456789).split(".");
var out = parts[0] + "." + parts[1].substring(0, 3);
当然,第二种方法可能会阻塞带有指数的数字。
使用此 function 将数字四舍五入
// Arguments: number to round, number of decimal places
function roundNumber(rnum, rlength) {
var newnumber = Math.round(rnum*Math.pow(10,rlength))/Math.pow(10,rlength);
retrurn parseFloat(newnumber); // Output the result to the form field (change for your purposes)
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.