基于Qt 框架开发程序, 运行如下代码 qreal a = 1.15; int b = a * 100; 得到b=114, 如果想要获得更高的精度, 使转换的值正确得到115, 代码怎么写
时间: 2024-05-05 17:21:58 浏览: 67
可以使用Qt提供的qRound()函数,该函数可以将浮点数四舍五入到最接近的整数。可以将浮点数乘以100后使用qRound()函数进行四舍五入,然后再将结果赋值给整型变量b,示例如下:
```cpp
qreal a = 1.15;
int b = qRound(a * 100.0);
```
这样就可以得到b=115,获得更高的精度。需要注意的是,在将浮点数乘以100时需要将100写成100.0,以避免隐式类型转换导致的精度损失。
相关问题
D:\QT5.9.0\Project\test1\test14\mywidget.h:48: error: call of overloaded 'qDegreesToRadians(int&)' is ambiguous qreal y2 = 150 - (i % 10 == 0 ? 140 : 135) * qSin(qDegreesToRadians(i)); ^
该错误提示是因为qDegreesToRadians函数的参数类型不明确,有多种可能的匹配类型。您可以尝试将该函数的参数类型更改为double类型,或将参数强制转换为double类型,以明确要调用的函数版本。例如,您可以将代码修改为以下形式:
```
qreal y2 = 150 - (i % 10 == 0 ? 140 : 135) * qSin(qDegreesToRadians(static_cast<double>(i)));
```
或者将函数参数类型更改为double类型:
```
qreal qDegreesToRadians(double d);
```
这样就可以避免函数调用的二义性问题。
Qt cpp 已知点A、点B。以点B为原心,求BA的弧度 源码
可以使用Qt的数学库qmath.h中的qAcos函数来计算弧度。具体实现如下:
```cpp
#include <qmath.h>
// 已知点A和点B的坐标
QPointF pointA(xA, yA);
QPointF pointB(xB, yB);
// 计算BA向量的坐标
QPointF vectorBA = pointA - pointB;
// 计算BA向量与横轴正方向的弧度
qreal radian = qAcos(vectorBA.x() / qSqrt(vectorBA.x() * vectorBA.x() + vectorBA.y() * vectorBA.y()));
```
其中,qSqrt函数用于计算平方根,qreal是Qt中定义的浮点数类型。最终的弧度值存储在变量radian中。