- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我想用 QSpinBox
编辑 QGraphicsItem
的不透明度。QSpinBox
为我提供了值 57,我用它来设置项目的不透明度。然后我从项目中获取更改后的不透明度,并想要填充 QSpinBox
。但是设置框的值会导致错误。
qDebug() << (int)(qreal)(0.57 * 100.0);
输出56
这是一个已知错误吗?有解决方法吗?
最佳答案
不要依赖 float 的精度,因为它的计算不准确。您可以阅读有关此问题的更多信息 here或 here .
如果您使用 qSetRealNumberPrecision
为输出设置更高的精度,您会看到问题的真正根源——0.57 * 100.0
的结果不是精确的 57,而是类似 56.999999999999992895 的结果:
qDebug() << qSetRealNumberPrecision(20) << 0.57 * 100.0;
所以最好简单地round你的数字到最接近的整数而不是转换为 int
这只是省略了小数:
qDebug() << qRound(0.57 * 100.0);
关于c++ - Qt qreal计算错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43253278/
如何解决以下问题,即转换 const QVector>至 QVector> ? 我尝试了一些步骤但没有帮助: QVector> points = const_cast>>(abc.points); a
在 Qt 文档中,它说 qreal是一个 Typedef for double unless Qt is configured with the -qreal float option. 这基本上意味
我将 Qt 与 C++ 一起使用,但我似乎不理解某些让我感觉不一致的东西。我有一个方法可以操纵作为参数发送给它的变量,这是它的声明 aManipulation(qreal& a);//对qreal的引
我有一个 QPointF,它有 .x() 和 .y() 方法,它们是 qreal 对象。这些可以转换到花车上吗?怎么办? 最佳答案 是的,他们可以。在 ARM 平台上,它们已经是 float 。否则就
有没有办法在 Qt 中使用 qreal 获取十进制值?? 就像这样: qreal decimal; average = 3/2; 输出肯定应该是 1.5,但我得到的结果却是 1。 谁能帮帮我?? 最佳
我正在使用 Ubuntu 11.10、Qt 4、Qwt 6.0.1 问题是一般来说一切正常,Qwt 的示例编译没有任何问题,但是当我尝试从 QPointF.x 转换为 double 时,我得到错误。有
我在尝试编译旧的 Qt 项目时遇到了这个错误: error: cannot convert 'float*' to 'qreal* {aka double*}' in initialization 这
我在访问 QList 时遇到一些问题属性(property)。我已经声明: Q_PROPERTY(QList circlePointsX READ circlePointsX NOTIFY circl
我收到以下代码警告: QRect rct ( 0, 0, rect().width(), rect().height() ); warning: passing `qreal' for convert
我是一名优秀的程序员,十分优秀!