Java 在Scala中将浮点用作Int(无转换)
我正在尝试在Scala中实现一个快速平方根逆算法。该算法涉及利用32位浮点数的二进制表示,将按位和整数运算应用于其二进制表示,就像它是一个Int。换句话说,我必须从浮点的二进制表示中创建一个Int,而不仅仅是使用cast运算符Java 在Scala中将浮点用作Int(无转换),java,scala,type-conversion,Java,Scala,Type Conversion,我正在尝试在Scala中实现一个快速平方根逆算法。该算法涉及利用32位浮点数的二进制表示,将按位和整数运算应用于其二进制表示,就像它是一个Int。换句话说,我必须从浮点的二进制表示中创建一个Int,而不仅仅是使用cast运算符 我记得不久前在Java中做过类似的事情,我相信这是使用Integer的一些静态方法完成的。不过,我是Scala新手,似乎找不到这样的方法。在Scala中如何做到这一点?您可以在Scala中使用任何java方法。如果你还记得那个方法是什么,请把它贴回这里。。。我真的很好奇。
我记得不久前在Java中做过类似的事情,我相信这是使用Integer的一些静态方法完成的。不过,我是Scala新手,似乎找不到这样的方法。在Scala中如何做到这一点?您可以在Scala中使用任何java方法。如果你还记得那个方法是什么,请把它贴回这里。。。我真的很好奇。可能是
java.lang.Float.floatToIntBits(yourFloat)
它工作得很好。我知道Scala有Java集成,但我没有想到Scala会从它自己的类型(即Float=>Float)执行隐式类型转换成适当的Java原语。是的,这就是我最初使用的方法。@user74300因为您似乎对性能感兴趣,请注意,在运行时没有分配ScalaFloat
实例。Scala的Float
扩展了AnyVal
(与AnyRef
)这是一种简洁、面向对象的方法,可以向语言添加非引用类型。另请参见on value类。@KuluLimpa通常不分配它,但有时仍有装箱