在一个程序中,我想显示数字" 0.12345
" as" .12345
" ({1}}中删除第一个零点。为此,我写了下面的简单代码:
lineEdit
当我运行它时,程序和Qt Creator挂起,我需要重新运行它才能正常运行。
程序以这种方式行事的问题是什么?
答案 0 :(得分:1)
您的程序永远不会退出while
循环,因为您正在使用==
运算符比较浮点数。这会导致计算错误(您可以阅读更多相关信息here)。
在Qt中检查double
变量相等的正确方法是使用qFuzzyCompare
函数:
if (qFuzzyCompare(temp, n)) {
break;
}
如果正确理解您的任务,您的代码就太复杂了。这应该完成整个工作:
double num = 0.12345;
if (num > 0 && num < 1) {
QString str = QString::number(num).remove(0, 1);
lineEdit->setText(str);
}