今天遇到一个问题:
float CurTime = FApp::GetCurrentTime(); UE_LOG(LogGame, Warning, TEXT("%3.2f"), CurTime); CurTime += 1; UE_LOG(LogGame, Warning, TEXT("%3.2f"), CurTime);
结果两个数值的打印 有时相同, 有时结果相差2
看汇编 也没什么问题
000007FEB7EB9B37 movss xmm0,dword ptr [CurTime] 000007FEB7EB9B3D addss xmm0,dword ptr [__real@42c80000 (07FEB7F7BAB0h)] 000007FEB7EB9B45 movss dword ptr [CurTime],xmm0
1个小时后的结论是: GetCurrentTime() 返回的是double型.
应该是 double 赋值给 float 时, float的指数位用完了,所以加另一个浮点数时, 只取整数部份(大于1时, 小数部分进1)
随着时间增长,有一天,这个结果会是”有时数值相同,有时结果相差4″