繁体   English   中英

任何人都可以在 javascript 中建议一个好的数学 function 来舍入 integer 吗?

[英]can any one suggest a good math function in javascript to round integer?

我必须将值从2.34567892.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM