QString格式化输出double类型的精度问题

本文最后更新于:2022年5月29日 上午

QString::number()格式化输出double类型的精度。

QStrin的double类型arg()方法原型:

1
QString QString::arg(double a, int fieldWidth = 0, char format = 'g', int precision = -1, QChar fillChar = QLatin1Char( ' ' )) const
  1. 说明:

    format和precision,一个指明规格,一个指明精度。

    • 规格默认为 ‘g’ 或 ‘G’,指示后面的精度为整数和小数部分总和的长度;
    • 规格为’e’或 ‘E’ 时,表示为科学记数法形式,精度部分指示的为小数部分的位数长度;
    • 规格为其他字符时,无作用,输出原double数字。
  2. 代码测试结论:

    qt的string会在格式化的时候对double类型的数据进行处理,默认显示6个数,并四舍五入,1234.5678会显示为1234.57,12345.678就会显示12345.7,如果整数部分超过6个数,就会默认使用科学记数法显示。

解决方法

1
2
QString::number(d, 'f', 2); // 强制输出时为2位小数
QString::number(d, 'g', 15) // 设置最大可显示整数和小数部分长度总和为15

QString格式化输出double类型的精度问题
https://kevinloongc.github.io/posts/980de878.html
作者
Kevin Loongc
发布于
2021年12月20日
许可协议