• 2336阅读
  • 3回复

[提问]不确定小数位数时,从double转到QString的问题。 [复制链接]

上一主题 下一主题
离线niushitana
 

只看楼主 倒序阅读 楼主  发表于: 2020-04-02
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

只看该作者 1楼 发表于: 2020-04-02
回 niushitana 的帖子
反正我记得我曾经写过一个东西,toDouble进行计算后,少了一分钱,换成toFloat没问题,后来不管用toDboule了
https://wiki.qt.io/Qt_5.12_Release
https://wiki.qt.io/New_Features_in_Qt_5.12
https://wiki.qt.io/Qt_5.12.0_Known_Issues
https://www.qt.io/blog/qt-5.13.2-released
https://www.qt.io/blog/qt-creator-4.10.2-released
https://wiki.qt.io/Qt_5.12_Tools_and_Versions
离线20091001753

只看该作者 2楼 发表于: 2020-04-02
QString::number(double n, char format = 'g', int precision = 6)
如果你不想指明 precision 多少位,可以尝试填 -1
即:
QString::number(lsq_cx.value(j).toDouble(),'f',-1);
(づ ̄ 3 ̄)づ
离线maxlogo

只看该作者 3楼 发表于: 2020-04-03
直接用QString::number就可以了,什么都不用指定, 'g'可以去掉尾随0,但是注意精度问题,默认精度是6位精度(整数部分+小数部分总共是6位精度),整数部分如果超过有效精度会被换成科学计数法,整数部分+小数部分超过有效精度,小数部分会四舍五入。自己把握吧
个人博客:
简书:https://www.jianshu.com/u/14fa805306bd
CSDN:https://blog.csdn.net/qq10097355
思否:https://segmentfault.com/u/lowbees/articles
快速回复
限100 字节
 
上一个 下一个