我想在JavaScript中将浮点数转换为整数。实际上,我想知道如何进行两种标准转换:通过截断和舍入。而且高效,而不是通过转换为字符串和解析。


当前回答

对于截断:

var intvalue = Math.floor(value);

对于圆形:

var intvalue = Math.round(value);

其他回答

还有一种可能的方法-使用XOR运算:

console.log(12.3^0);//12console.log(“12.3”^0);//12console.log(1.2+1.3^0);//2.console.log(1.2+1.3*2^0);//3.console.log(-1.2^0);//-1.console.log(-1.2+1^0);//0console.log(-1.2-1.3^0);//-2.

按位运算的优先级低于数学运算的优先级,这很有用。试穿https://jsfiddle.net/au51uj3r/

您可以使用parseInt方法进行无舍入。由于0x(十六进制)和0(八进制)前缀选项,请小心用户输入。

var intValue = parseInt(floatValue, 10);

编辑:作为警告(来自注释部分),请注意某些数值将被转换为指数形式,如1e21,这将导致“1”的十进制表示不正确

要截断:

//Math.ctrunk()是ES6规范的一部分console.log(数学截断(1.5));//返回1console.log(数学截断(-1.5));//返回-1//数学floor(-1.5)将返回-2,这可能不是您想要的

要舍入:

console.log(数学舍入(1.5));//2.console.log(数学舍入(1.49));//1.console.log(数学舍入(-1.6));//-2.console.log(数学舍入(-1.3));//-1.

在您的例子中,当您希望在末尾插入字符串(以便插入逗号)时,也可以只使用Number.toFixed()函数,但这将执行舍入。

如果您使用angularjs,那么简单的解决方案如下HTML模板绑定

{{val |编号:0}}

它会将val转换为整数

通过链接docs.angularjs.org/api/ng/filter/number