【发布时间】:2020-01-23 22:42:58
【问题描述】:
我正在尝试将字符串转换为浮点数,反之亦然,但编译器会抱怨它。在编辑器中我得到implicit conversion increases floating-point precision: 'float' to 'double'。但据我所知,至少我不会将浮点数转换为双精度数。
C:\Qt\5.13.0\mingw73_64\include\QtCore\qstring.h:649: error: 'double QString::toFloat(bool*) const' cannot be overloaded
double toFloat(bool *ok=nullptr) const;
^~~~~~~
在它的正下方:
C:\Qt\5.13.0\mingw73_64\include\QtCore\qstring.h:648: error: with 'float QString::toFloat(bool*) const'
float toFloat(bool *ok=nullptr) const;
^~~~~~~
是我得到的,但我不知道为什么。我现在唯一能想象的是,c++ 无法判断我正在尝试使用哪个版本的toFloat。编译器在 QString 类中指出我可以看到两个版本的toFloat,除了返回类型之外它们是相同的。我真的不知道如何解决这个问题,所以我想要一些关于我应该在这里添加什么来解决它的指导。
else if (btnId == "=") {
QRegExp separator("[(+|-|/|*)]");
QStringList data = displayText.split(separator);
bool ok = false;
float result = 0.0;
while (!data.isEmpty()) {
QString str = data[0];
data.pop_front();
if (str == "+" || str == "-" || str == "/" || str == "*")
{
QString str2 = data[0];
data.pop_front();
if (str == "+") {
double tmpF = str2.toFloat(&ok);
result += tmpF;
}
else if (str == "-") {
double tmpF = str2.toFloat(&ok);
result -= tmpF;
}
else if (str == "/") {
double tmpF = str2.toFloat(&ok);
result /= tmpF;
}
else if (str == "*") {
double tmpF = str2.toFloat(&ok);
result *= tmpF;
}
}
displayText.setNum(result, 'g', 6);
}
}
【问题讨论】:
标签: c++ qt floating-point qstring