我试图将一个字符串转换为浮点数,反之亦然,但编译器对此进行了抱怨。在编辑器中,我收到了 implicit conversion increases floating-point precision: 'float' to 'double'
的警告信息,但我至少不知道自己正在将float转换为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);
}
}
#define
宏或其他东西吗? - hyde