1. ホーム
  2. c++

[解決済み] QString:小数点以下2桁までの数値(末尾に0を付けない)。

2022-02-12 10:09:44

質問内容

このような分割があります。

number / 1000.0

96.0000000001のような答えが出ることもあれば、期待通りに除算ができることもあります。

小数点以下2桁までで、末尾にゼロをつけない数値にしたいのですが。

もし、それが 96.5500000001 と表示されるはずです。 96.55 .

もし、それが 96.4000000001 と表示されるはずです。 96.4

このように文字列をフォーマットすることは可能なのでしょうか?

ドキュメントを確認したところ、小数点以下の桁数を指定するための 'f' 引数が用意されていますが、この方法では末尾のゼロが残ります。 これは私が試したものです。

QString::number(number / 1000.0, 'f', 2)

しかし、これでは 96.4000000001 --> 96.40 ではなく 96.4

何か解決策はありますか?このようにフォーマットするにはどうすればよいのでしょうか?

どのように解決するのですか?

その ドキュメント は、何をすべきかについてかなり明確です。

<ブロッククオート

引数のformatで精度も指定します。e', 'E', 'f'フォーマットの場合,精度は小数点以下の桁数を表す。g' と 'G' フォーマットの場合,精度は有効数字の最大桁数を表す(末尾の0は省略される)。

したがって、'g'または'G'フォーマットのいずれかを使用してください。

main.cpp

#include <QString>
#include <QDebug>

int main()
{
    qDebug() << QString::number(96400.0000001 / 1000.0, 'g', 5);
    qDebug() << QString::number(96550.0000001 / 1000.0, 'G', 5);
    return 0;
}

main.pro

TEMPLATE = app
TARGET = main
QT = core
SOURCES += main.cpp

ビルドと実行

qmake && make && ./main

出力

"96.4"
"96.55"