您的位置:首页 > 编程语言 > Qt开发

QT浮点型输出问题

2016-06-18 23:06 911 查看
如下一段输出浮点型的程序:


double aa;

aa = (double)569411194*0.001;

qDebug()<<QString::number(aa);

qDebug()<< aa;

qDebug("%f",aa);

printf("%f",aa);


输出结果为:

"569411"569411569411.194000569411.194000

可以看到,前两种输出方式没了小数部分。按照c语言的格式控制的方式输出是正常的。猜测是qDebug()函数的默认设置的问题。

第二种使用了QString::number()函数,查看该函数的定义,输出浮点型的函数如下:

static QString number(double, char f='g', int prec=6);



其默认只输出6位,提高输出的位数即可。


在往文件里写浮点数时也是如此。


不论是什么语言,在处理浮点数时都要仔细处理。


在将浮点数转换成字符串时,QString::number()是一种方法,也可以按照表中c++的格式来完成。


QString str = "User: "; 

str += userName + "\n";
还有一个QString::append()函数与+=操作符有这一样的功能:str = "User: "; str.append(userName); str.append("\n");组合字符串的一个完全不同的方式是使用QString的sprintf()函数:str.sprintf("%s %.1f%%", "perfect competition", 100.0);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: