是否将haxe.Int64转换为浮点?
如何将haxe.Int64转换为浮点 我有点像是否将haxe.Int64转换为浮点?,haxe,Haxe,如何将haxe.Int64转换为浮点 我有点像 var x = haxe.Int64.parseString("1000000000000"); 我想把它转换成一个浮点数。我查了一下,发现了fromFloat、ofInt和toInt,但里面没有toFloat方法。我也看不到Haxe标准库中的功能,我检查了Int64和Int64Helper 但是,麻省理工学院许可的库确实包含一个实现,请参见以下内容: 或者,您可以通过组合高/低两半将Int64转换为浮点: class Test { stat
var x = haxe.Int64.parseString("1000000000000");
我想把它转换成一个浮点数。我查了一下,发现了
fromFloat
、ofInt
和toInt
,但里面没有toFloat
方法。我也看不到Haxe标准库中的功能,我检查了Int64
和Int64Helper
但是,麻省理工学院许可的库确实包含一个实现,请参见以下内容:
或者,您可以通过组合高/低两半将Int64转换为浮点:
class Test {
static function main() {
var x = haxe.Int64.parseString("1000000000000");
var f = x.high * 4294967296. + (x.low >>> 0);
trace("" + x);
trace(f);
}
}
这里,,
4294967296。
是无符号2^32的浮点文本>>0是必需的,因为下半部分可以签名。或者,对于简单的转换方法,您可以使用:
var f = Std.parseFloat(haxe.Int64.toStr(x));
您可能希望尝试使用FPHelper
class。它包含一组将Int类型转换为Float/Double的方法
import haxe.io.FPHelper;
class Test {
static function main() {
var x = haxe.Int64.parseString("1000000000000");
var f = FPHelper.i64ToDouble(x.low, x.high);
trace(f);
}
}
见谢谢。我不知道你为什么要复制/粘贴thx.core的实现,但我很感激你的回答,并且没有意识到thx.core有我想要的东西。@uvtc很乐意帮助。复制粘贴非常有用,因此即使将来移动或重命名thx.core存储库,答案仍然很有用。对此要注意,这并不是大多数人所期望的。它不处理数值,但将IEEE浮点数的二进制表示形式打包为4或8字节。用于序列化,但不用于数学计算。
var f = Std.parseFloat(haxe.Int64.toStr(x));
import haxe.io.FPHelper;
class Test {
static function main() {
var x = haxe.Int64.parseString("1000000000000");
var f = FPHelper.i64ToDouble(x.low, x.high);
trace(f);
}
}