在 javascript 中将 float 转换为 int 的最快方法?
Fastest way to cast a float to an int in javascript?
假设我有 x = 12.345
。在 javascript 中,哪个函数 floatToInt(x)
具有最快的 运行 时间使得 floatToInt(12.345)
returns 12
?
好问题!前几天我实际上不得不处理这个问题!只写 parseInt 似乎是一个 goto,但是等等!我们可以更漂亮。
所以我们可以在很多事情上使用位运算符,这似乎是一个很好的情况!假设我有你问题中的数字 12.345,我可以使用位运算符“~”来反转你数字中的所有位,并在此过程中将数字转换为 int! 喜欢JS
所以现在我们有了数字的反转位表示,然后如果我们再次“~”它,我们会得到......击鼓声...... .....我们的数字没有小数!不幸的是,它不进行舍入。
var a = 12.345;
var b = ~~a; //boom!
我们可以为此使用 Math.round()。但是你去吧!您可以在 JSperf 上试用它,看看您获得的轻微加速!希望对您有所帮助!
我认为这是一个很好的例子
var intvalue = Math.floor( floatvalue );
var intvalue = Math.ceil( floatvalue );
var intvalue = Math.round( floatvalue );
只是做:
~~(x + 0.5)
干杯,Z
用零进行算术或运算就可以了。
> 12 === (0 | 12.245)
true
如果您不关心舍入细节,Math.trunc()
是简单、标准和可读的。我没有测试性能,但它肯定比 Math.round()
和 parseInt()
.
好
假设我有 x = 12.345
。在 javascript 中,哪个函数 floatToInt(x)
具有最快的 运行 时间使得 floatToInt(12.345)
returns 12
?
好问题!前几天我实际上不得不处理这个问题!只写 parseInt 似乎是一个 goto,但是等等!我们可以更漂亮。
所以我们可以在很多事情上使用位运算符,这似乎是一个很好的情况!假设我有你问题中的数字 12.345,我可以使用位运算符“~”来反转你数字中的所有位,并在此过程中将数字转换为 int! 喜欢JS
所以现在我们有了数字的反转位表示,然后如果我们再次“~”它,我们会得到......击鼓声...... .....我们的数字没有小数!不幸的是,它不进行舍入。
var a = 12.345;
var b = ~~a; //boom!
我们可以为此使用 Math.round()。但是你去吧!您可以在 JSperf 上试用它,看看您获得的轻微加速!希望对您有所帮助!
我认为这是一个很好的例子
var intvalue = Math.floor( floatvalue );
var intvalue = Math.ceil( floatvalue );
var intvalue = Math.round( floatvalue );
只是做: ~~(x + 0.5)
干杯,Z
用零进行算术或运算就可以了。
> 12 === (0 | 12.245)
true
如果您不关心舍入细节,Math.trunc()
是简单、标准和可读的。我没有测试性能,但它肯定比 Math.round()
和 parseInt()
.