首页| 论坛| 消息

标题:不确定小数位数时,从double转到QString的问题。
作者:niushitana
日期:2020-04-02 11:48
内容:

QT在windows上的编程,数据库是sqlserver2008,变量lsq_cx类型是QSqlQuery,执行lsq_cx.exec("select * from table")后,当数据库表中具体字段类型是decimal时,想把小数转成QString,百度抄了下别人的代码如下:
ls_value = QString("%1").arg(lsq_cx.value(j).toDouble());
ls_value=QString::number(lsq_cx.value(j).toDouble(),'f',4);
第一行代码的问题是小数点后面如果有4位,转换后会变成只有3位。第二行代码的问题是如果小数点后面只有3位,转换后第4位会补0。我就想要,小数点后面有几位转换后就是几位,不补0,也不减少位数的方法。实在是英文不好,看不太懂QT的帮助,又急着要解决这个问题,所以特来此求助各位,先在此谢过了。


#1 回 niushitana 的帖子 [liulin188 04-02 14:59]
反正我记得我曾经写过一个东西,toDouble进行计算后,少了一分钱,换成toFloat没问题,后来不管用toDboule了
#2 [20091001753 04-02 17:59]
QString::number(double n, char format = 'g', int precision = 6)
如果你不想指明 precision 多少位,可以尝试填 -1
即:
QString::number(lsq_cx.value(j).toDouble(),'f',-1);
#3 [maxlogo 04-03 08:51]
直接用QString::number就可以了,什么都不用指定, 'g'可以去掉尾随0,但是注意精度问题,默认精度是6位精度(整数部分+小数部分总共是6位精度),整数部分如果超过有效精度会被换成科学计数法,整数部分+小数部分超过有效精度,小数部分会四舍五入。自己把握吧

回复 发表
主题 版块