0

我有一个例程,它以指数格式(例如 2,5E-02 或 4E+06)作为 QString 获取数字。当我打印值时,我总是只得到整数,当它们小于 1 时,我总是得到 0。有谁知道我在这里做错了什么?(使用 cout 行我只想测试 QString::number() 是否为我毁了它)

这是一个代码片段:

QStringList valPair;
value = atof(valPair[0].replace(",",".").toAscii());
value1 =atof(valPair[1].replace(",",".").toAscii());
strValue = "[" + QString::number(value) + ", " + QString::number(value1) + "]";
//cout<<value<<" "<<value1;

我会很感激任何帮助!

编辑:这是变量声明的问题......

double value, value1;
4

2 回答 2

1

你为什么要做所有这些工作?如果您使用QString::toDoubleQString::number(),Qt 已经拥有您正在寻找的东西。如果您在调用 toDouble() 之前手动设置您的语言环境,那么您可以使用逗号十进制表示法而无需替换任何内容。

您还可以创建一个字符串模板QString("[%1,%2]"),然后double使用QString::arg.

于 2012-11-13T19:47:19.610 回答
1

转换函数不支持您的locale,它使用逗号作为小数分隔符。改为使用2.4e4

于 2012-11-13T06:57:57.253 回答