Jenkins的log中显示乱码

  • 用Jenkins管理unreal4的自动化,出现乱码.
  • 查看Jenkins的 系统管理->系统信息, 显示 file.encoding GBK
  • 因为Jenkins启动时,读取了系统的encoding, 操作系统是中文的,但unreal输出的是utf8
  • 所以在启动的时候,要告诉Java, 用utf8的encoding.
  • Jenkins被安装为Service, 打开Services.msc, 在属性里,Jenkins的启动不能添加参数.
  • Jenkins的service启动,是调用Jenkins.exe. (不是 Java -jar Jenkins.war),所以不能加参数.
  • 查看jenkins的安装文档,
  • 当用Service方式启动时,会在Jenkins.exe的目录下,生成Jenkins.xml文件,这里面可以设置启动参数.
  • 修改Jenkins.xml文件,在 arguments 项中,加入-Dfile.encoding=UTF8 (需要加在前面一些.放在最后面貌似无效).
  • 再重启service.

一个浮点数相加不正确的问题

今天遇到一个问题:

 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″