QT浮點型輸出問題

如下一段輸出浮點型的程序:

    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");

組合字符串的一個完全不同的方式是使用QStringsprintf()函數:

str.sprintf("%s %.1f%%", "perfect competition", 100.0);

發佈了44 篇原創文章 · 獲贊 16 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章