首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Actionscript是否有数学规范?

Actionscript是否有数学规范?
EN

Stack Overflow用户
提问于 2018-06-09 06:35:11
回答 2查看 76关注 0票数 1

This Flash game有很多玩家,包括我和一些朋友。我们注意到,对于不同的人,同样的事情可以运行不同的方式。模拟中的数学问题绝对是罪魁祸首。原因是否在硬件、操作系统、浏览器、32位/64位等方面尚不清楚。但是对于我们必须测试的组合,我们已经从相同的模拟开始条件中获得了5个不同的最终结果,并且可能会得到更多。

这让我想知道,有没有浮点数学规范?如果有,它对计算的准确性和确定性有什么规定?

我将其与Java进行比较,后者使用Math类区分常规浮点运算,而使用StrictMath类和strictfp关键字区分确定性浮点运算。两者总是在精确结果的1ULP内,这也意味着对于单个操作或函数调用,常规数学和严格数学总是给出彼此在1ULP内的结果。文档对此非常清楚。我希望其他受人尊敬的语言也有类似的东西,说明它们的浮点计算有多准确,以及它们是否在任何地方都给出相同的结果。

自从一些人说这个游戏是不诚实的以来,更新:

其他一些人已经拆解了swf,甚至为它制作了mod,他们已经看到了游戏引擎,可以确认没有随机性。Box2d用于它的物理特性。如果一个设计在随后的运行中确实有不同的运行,它实际上由于一些bug而改变了,通常这是一个明显的不同,但如果没有,你可以用this tool检查原始数据,看看它是不同的。正如预期的那样,不同的启动条件会得到不同的最终结果。

至于我们到目前为止所知道的,这是测试级别的结果:

例如,如果我在桌面上运行32位Chrome (AMD A10-5700作为CPU),我总是会得到"946 ticks“的结果。但如果我在Firefox或Internet Explorer上运行,我总是得到"794个滴答“的结果。

EN

回答 2

Stack Overflow用户

发布于 2018-06-11 20:13:38

在这种意义上,Actionscript并没有真正的数学规范。这是你能得到的最接近的结果:

https://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/Math.html

它在顶部的底部写着:

根据

或操作系统使用的算法,数学函数acos、asin、atan、atan2、cos、exp、log、pow、sin和sqrt可能会产生略微不同的值。执行所列函数的计算时,Flash运行时会调用CPU (如果CPU不支持浮点计算,则调用操作系统),结果会根据所使用的CPU或操作系统而略有不同。

所以来回答我们的两个问题:

关于准确性,它是怎么说的?实际上,没什么。在任何时候,它都没有提到结果可以有多不准确的限制。

关于决定论,它说了些什么?硬件和操作系统肯定是因素,所以它是依赖于平台的。没有确认其他因素。

如果你想看得更深一些,你只能靠自己了。

票数 1
EN

Stack Overflow用户

发布于 2018-06-15 04:05:08

根据the docs的说法,除了intuint类型之外,Actionscript还有一个通用的Number数据类型:

IEEE数据类型使用由

二进制浮点算术标准(IEEE754)指定的64位双精度格式。该标准规定了如何使用64个可用位来存储浮点数。一位用于指定数字是正数还是负数。11位用于指数,以2为基数存储。其余52位用于存储有效数(也称为尾数),即指数表示的幂的数字。

通过使用Number数据类型的一些位来存储指数,Number数据类型可以存储的浮点数比它使用所有位作为有效数时要大得多。例如,如果Number数据类型使用全部64位来存储有效数,则它可以存储多达265 - 1的数字。通过使用11位来存储指数,number数据类型可以将其有效数提高到21023的幂。

虽然这个数字的范围很大,但它是以精度为代价的。由于Number数据类型使用52位来存储有效数,因此需要52位以上才能精确表示的数字(例如分数1/3 )只是近似值。如果您的应用程序需要十进制数的绝对精度,请使用实现十进制浮点运算的软件,而不是二进制浮点运算。

这可以解释你所看到的不同的结果。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50769210

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档