我有两个使用相同库的示例应用程序,它们之间的主要区别是一个使用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有没有因为qt而“atof”的行为发生变化的情况?
发布于 2016-02-09 14:58:46
您注意到的问题很可能是由Qt的区域设置概念引起的。您可以使用:
QLocale::setDefault(QLocale::C);让它像atof一样工作。
更新
QLocale::setDefault似乎没有设置Qt使用的默认区域设置。它只设置在构造QLocale时将创建的默认区域设置。有关更多信息,请参见在Qt中更改区域设置和公认的答案。
https://stackoverflow.com/questions/35295052
复制相似问题