qt中处理精度丢失
提要
定義的qreal類型的變量在做減法和乘法時所得的值不正確。
示例
做減法運算
//參數定義 qreal m_lastScale;//上一次縮放比 qreal m_scale;//保存縮放比m_scale = m_lastScale - 0.05;//變為減0.05后計算的值不對下面的方法可以解決精度丟失導致的計算所得的值不正確的問題
m_scale = m_lastScale - 0.05;//變為減0.05后計算的值不對//將m_scale四舍五入取2位解決精度丟失2021-3-18QString str = QString::asprintf("%.2f",m_scale);m_scale = str.toDouble();做乘法運算時所得的值不正確
int ratio = m_scale * 100;下面的這種做法可以得到正確值。
qreal ratio = m_scale * 100; //將m_scale四舍五入取2位解決精度丟失2021-3-18 QString str = QString::asprintf("%.2f",ratio); ratio = str.toDouble(); QString strScale = QString::number(ratio) + "%";總結
以上做法中實際上是將數值轉換為保留特定位的字符串,然后再將字符串轉換為特定的數值。
總結
- 上一篇: 使用gitlab初次上传代码
- 下一篇: 简记模态对话框和非模态对话框