【发布时间】:2016-02-09 14:51:08
【问题描述】:
我有两个使用相同库的示例应用程序,它们之间的主要区别在于一个使用 qt 而另一个应用程序是控制台应用程序。
在公共库中,我有这个测试代码:
double test = 0.1;
double test2 = atof("2.13134");
double test3 = atof("1,12345");
如果我使用非 qt 应用程序的值是:
test = 0.10000000000001
test2 = 2.1323399999999999998
test3 = 1 // This is the expected result using a ',' as delimitation character
但是使用 qt 应用程序:
test = 0.10000000000001
test2 = 2 // This is not expected!!!
test3 = 1.1234500000000000001
在任何情况下,'atof' 的行为会因为 qt 而发生变化吗?
【问题讨论】:
-
Qt 使用代码预处理,这可能会做不好的事情。或者可能有一些宏在起作用。
-
@Cheersandhth.-Alf 这看起来更像是一个语言环境问题(请记住,
,在许多语言环境中是小数点字符)——也许 Qt 正在根据系统设置设置一个非默认语言环境? -
对于来自德国的人来说,Qt 应用程序是正确的。
-
这里的主要问题是,为什么小数点字符不同。因为我不是故意改这个的,而且这段代码根本没有使用qt。
-
@Cheersandhth.-Alf moc 不会修改现有代码,它会为信号/插槽、元对象处理生成附加代码。