- 问题
在对账过程中出现0.01对不上的情况,查明问题为显示问题,但在展示页,部分数字展示为两位小数,部分展示为1位小数
- 原因
QStrin的double类型arg()方法原型:
QString QString::arg(double a, int fieldWidth = 0, char format = 'g', int precision = -1, QChar fillChar = QLatin1Char( ' ' )) const
- 资料显示:format和precision,一个指明规格,一个指明精度。规格默认为 'g' 或 'G',指示后面的精度为整数和小数部分总和的长度;规格为'e'或 'E' 时,表示为科学记数法形式,精度部分指示的为小数部分的位数长度;规格为其他字符时,无作用,输出原double数字
- -代码测试结论:qt的string会在格式化的时候对double类型的数据进行处理,默认显示6个数,并四舍五入,1234.5678会显示为1234.57,12345.678就会显示12345.7,如果整数部分超过6个数,就会默认使用科学记数法显示
- 解决方法
QString::number(d, 'f', 2); //强制输出时为2位小数