我尝试将OMNet ++项目从Linux移至Windows平台。
移至Windows后,我发现在发布模式下运行时浮点不够精确。
例如,我有一个名为GUARD_INTERVAL的时间参数。
我将其设置为0.000001,并在模拟过程中进行设置。 我看到它在发布模式下打印为0.000000999999。 但是在调试模式下显示为0.000001。
我认为这不会影响模拟结果。 但事实证明会如此。
那么,有什么方法可以使发布模式获得与调试模式相同的精度?
答案 0 :(得分:0)
首先,您可以尝试从#
的这一行中删除井号(-march=native -mtune=native
)和configure.user
部分:
#CFLAGS_RELEASE='-O3 -march=native -mtune=native -DNDEBUG=1'
所以变成这样:
CFLAGS_RELEASE='-O3 -DNDEBUG=1'
然后从头开始重建OMNeT ++(从./configure
开始)。
如果这样做无济于事,那么您也可以尝试在每次刷新时将此行中的-O3
降低到-O2
,然后降低到-O1
,甚至降低到-O0
构建。