是否将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

如何将haxe.Int64转换为浮点

我有点像

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);
    }
}