如何修复QNX的浮点精度?

时间:2016-02-29 09:13:20

标签: c++ linux precision qnx

static const double sKPrecision = 1.e+16;
std::sprintf(str, "%1.15e", round(val * sKPrecision) / sKPrecision);

观察:

val        str for Linux           str for QNX
-0.174533  -1.745329251994333e-01  -1.745329251994333e-01
1.06202    1.062015382745040e+00   1.062015382745040e+00
1.63244    1.632439935370810e+00   1.632439935370811e+00

根据上表,对于1.63244," str" QNX与Linux不同。 我希望这个值与Linux的值相同。我不知道如何为QNX平台解决它。

1 个答案:

答案 0 :(得分:0)

从这里开始:Enabling strict floating point mode in GCCGCC Wiki - Floating Point Math

需要考虑的其他事项:

  • 您是否为两者使用相同的处理器?
  • 两者都在32位模式下运行(截至2/2016的AFAIK,QNX没有64位版本)?
  • 如果运行x86,是否将FPU的编译加载中间值返回寄存器(即将80位数学运算截断为64位)或者所有值都保存在FPU(80位)中? (见:This answer about the -ffloat-store flag.