查看完整版本: [-- 不确定小数位数时,从double转到QString的问题。 --]

QTCN开发网 -> Qt基础编程 -> 不确定小数位数时,从double转到QString的问题。 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

niushitana 2020-04-02 11:48

不确定小数位数时,从double转到QString的问题。

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的帮助,又急着要解决这个问题,所以特来此求助各位,先在此谢过了。

liulin188 2020-04-02 14:59
反正我记得我曾经写过一个东西,toDouble进行计算后,少了一分钱,换成toFloat没问题,后来不管用toDboule了

20091001753 2020-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);

maxlogo 2020-04-03 08:51
直接用QString::number就可以了,什么都不用指定, 'g'可以去掉尾随0,但是注意精度问题,默认精度是6位精度(整数部分+小数部分总共是6位精度),整数部分如果超过有效精度会被换成科学计数法,整数部分+小数部分超过有效精度,小数部分会四舍五入。自己把握吧


查看完整版本: [-- 不确定小数位数时,从double转到QString的问题。 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled