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


当前回答

对于截断:

var intvalue = Math.floor(value);

对于圆形:

var intvalue = Math.round(value);

其他回答

//将浮点数转换为整数数学楼层(5.95)//5数学ceil(5.95)//6数学舍入(5.4)//5数学舍入(5.5)//6数学截断(5.5)//5//快速方法console.log(5.95|0)控制台日志(~~5.95)控制台日志(5.95>>0)//5

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

var intValue = parseInt(floatValue, 10);

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

如果您想要向下四舍五入的答案:

var intvalue = Math.floor( floatvalue );
var integer = Math.floor(4.56);
Answer = 4

如果要向上舍入:

var intvalue = Math.ceil( floatvalue );
Answeer would be = 5

双位not运算符可用于截断浮点数。您提到的其他操作可通过Math.floor、Math.ceil和Math.round获得。

> ~~2.5
2
> ~~(-1.4)
-1

更多细节由詹姆斯·帕多尔西提供。

我只想指出,在金钱上,你想要圆,而不是截断。因为4.999452*100四舍五入会给你5,一个更具代表性的答案,所以少一分钱的可能性要小得多。

最重要的是,不要忘了银行家的舍入,这是一种抵消直接舍入带来的轻微正偏差的方法——您的金融应用可能需要它。

JavaScript中的高斯/银行家舍入