Я пытаюсь преобразовать строку в плавающее и наоборот, но компилятор жалуется на это.В редакторе я получаю implicit conversion incrases 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);
}
}