ActionScript-actionscript单精度浮点数

发布于 2017-01-07 02:02:52 字数 396 浏览 1202 评论 1

ActionScript只有Number类型,这是一个64位的双精度浮点数
现在有一段Java代码,我想移植到ActionScript,Java代码中有一些float类型的运算,转换到ActionScript有问题
Java中,
float x = 100.0f;
float z = 30.0f;
float b = x + (0.9706216 * z);
b为129.118652

ActionScript
var x:Number = 100.0;
var scale:Number = 30.0;
var b:Number = x + (0.9706216 * scale);
b为129.118648

有什么办法方便地解决这个问题吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

浮生未歇 2017-04-18 17:05:34

就语言本身来说应该是没有办法(或者我不知道)

这里的实现可以做:
http://jsfromhell.com/classes/binary-parser
可以在他给出的example里实验:
http://jsfromhell.com/classes/binary-parser/example
129.118648按float转16进制 ->43011e60
再按16进制转回来: 129.11865234375

java里类似的转换我们可以写, 得到一样的结果:

@Test
public void sdfadads() throws InterruptedException{
int intval=Float.floatToRawIntBits(129.118648f);
System.out.printf("%xn",intval);
System.out.printf("%.12fn",Float.intBitsToFloat(intval));
}

上述转换的原理我们可以咨询java大神:
http://download.oracle.com/technetwork/java/javase/6/docs/zh/api/java/lang/Float.html#floatToRawIntBits%28float%29
http://download.oracle.com/technetwork/java/javase/6/docs/zh/api/java/lang/Float.html#intBitsToFloat%28int%29

BTW,你给出的例子里 按float算丢失了精度, double是正确的, 为啥一定要搞成float

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文