如下一段輸出浮點型的程序:
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);