ActionScript-actionscript单精度浮点数
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
就语言本身来说应该是没有办法(或者我不知道)
这里的实现可以做:
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