版本:3.17.2
语言:C++ + lua 5.1
安卓和ios都做了64位支持
安卓使用luajit
问题:
我们游戏的战斗逻辑计算,传入必要的参数,输出对应的结果;现在发现在安卓64位设备上会出现偶发的结果不稳定的情况。
举例:
function test(_val)
local b = 16;
print("test:".._val);
local rst = _val * b * 0.01;
return rst;
end
正常调用上述方法 确定的输入参数结果肯定也是固定的,不会出现另外一种结果。
可是我们现在就遇到在64位设备上偶发的不一致效果。
至于我们是如何发现这个问题的:我们的战斗逻辑计算过程会有详细的日志打印输出,上述现象是通过比对两份日志得出的。
另外通过几组日志的分析,我们发现一个现象:
异常的情况下,输入参数为 0 的时候,正常 rst应该是为零,但是最终的结果是 100;
异常的情况下,输入参数为 200 的时候,正常 rst应该是为32,但是最终的结果是 87;
和 0.01有关系?
把这个问题发到论坛上,主要是集思广益,想看看大家的想法,扩展一下解决问题的思路。