首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何对QLineEdit中键入的小数进行乘法?

如何对QLineEdit中键入的小数进行乘法?
EN

Stack Overflow用户
提问于 2020-10-12 11:55:54
回答 2查看 200关注 0票数 2

我试图计算c++ qt中两个电荷(库仑定律)之间的力。我有3行编辑,用户可以在其中键入数字(第一条线与点号1(q1)相关,第二条线条与点号2(q2)相关,第三条线条与两点电荷(R)之间的距离有关,用户点击按钮后,答案(两种电荷之间的力)出现在标签上。当我键入整数或大十进制数(例如0.25)时,代码工作正常,但当我键入非常小的小数(如0.00000000000000000016 )时,它返回0。有办法计算这么小的数字吗?

如果有人能帮我,我会很感激的。

这是我的代码:

代码语言:javascript
运行
复制
void MainWindow::on_calculate1_clicked()
{


QString lineq1;
QString lineq2;
QString lineq3;
double lineq1num,lineq2num,lineq3num,J;

lineq1 = ui->lineEdit->text();
lineq2 = ui->lineEdit_2->text();
lineq3 = ui->lineEdit_3->text();

lineq1num = lineq1.toDouble();
lineq2num = lineq2.toDouble();
lineq3num = lineq3.toDouble();

//The coulomb's law
J = abs(lineq1num * lineq2num)/((4 * (3.14) * (8.85 * pow(10,-12)))*(lineq3num * lineq3num));

ui->label_4->setText(QString::number(J));

}

这是我输入小十进制数时得到的结果:

我使用的公式如下:

真正的答案是:

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-10-12 12:14:22

您应该使用_NOT函数abs,因为它返回一个整数,并且作为连续,小的十进制值将四舍五入为零

使用替代qFabs

在这里,医生:

qreal qFabs(qreal v) 将v的绝对值作为qreal返回。

https://doc.qt.io/qt-5/qtmath.html#qFabs

票数 4
EN

Stack Overflow用户

发布于 2020-10-12 12:08:30

这可能是因为设定的精度太低。试着把它调高一点。

代码语言:javascript
运行
复制
ui->label_4->setText(QString::number(J, 'g', 10));

调用number()时的默认精度为6. QString::number()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64317405

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档