我想QGraphicsItem用a 编辑a的不透明度QSpinBox.该QSpinBox给我的值57,我用它来设定该项目的不透明度.然后我从项目中获得更改的不透明度,并希望填充QSpinBox.但设置框的值会导致错误.
qDebug() << (int)(qreal)(0.57 * 100.0);
Run Code Online (Sandbox Code Playgroud)
输出56
这是一个已知的错误?有解决方法吗?
由于计算的不准确性,不要依赖浮点数的精度.您可以在此处或此处阅读有关此问题的更多信息.
如果你使用输出设置更高的输出精度qSetRealNumberPrecision,你会看到问题的实际根 - 结果0.57 * 100.0不完全是57但是像56.999999999999992895:
qDebug() << qSetRealNumberPrecision(20) << 0.57 * 100.0;
Run Code Online (Sandbox Code Playgroud)
因此,最好简单地将数字舍入到最接近的整数而不是转换为int 简单地省略分数:
qDebug() << qRound(0.57 * 100.0);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
519 次 |
| 最近记录: |