15

QString数値を有効数字3桁に変換したい。

QString::number(myNumber,'f',3);

仕事をしますが、末尾のゼロのままです。それらなしでそれを使用する方法。

また、私は試してみましたが'g'、これらのゼロのままであってはなりません:

QString::number(myNumber,'g',3);

しかし、たとえば 472.76 は 473 に変換されます。これには驚きました。オプションでなぜそうなるの'g'か?

しかし、私は'f'フォーマットに興味があります。したがって、主な問題は、'f'末尾のゼロなしでそれを行う方法ですか?

入力 -> 必要な出力

472.76 -> 472.76

0.0766861 -> 0.077

180.00001 -> 180

4

5 に答える 5

14

これを投稿するのはほとんど恥ずかしいですが、うまくいきます:

QString toString( qreal num )
{
    QString str = QString::number( num, 'f', 3 );

    str.remove( QRegExp("0+$") ); // Remove any number of trailing 0's
    str.remove( QRegExp("\\.$") ); // If the last character is just a '.' then remove it

    return str;
}

この方法を使用してパフォーマンスが本当に心配な場合は、別の解決策を考え出すことをお勧めします。

于 2012-09-17T20:44:15.020 に答える
4
QString::number(myNumber,'g',3);

変換を有効数字に制限します。ほとんどの場合、3つの数字があります。

472.76 => 472
4.7276 => 4.72

のようなフォーマットされた印刷機能を使用してみてくださいQString::sprintf。これにより、より詳細に制御できるようになります。

QString numStr;
numStr.sprintf("f.3f", myNumber);
于 2012-09-17T13:17:05.613 に答える
0
QString str;
str.setNum(myNumber, 'f', 3);

これはあなたが必要とすることをします、私はそれをテストしました。奇妙なことに、「number」は「setNum」とは異なる動作をします。

于 2012-09-17T13:22:36.577 に答える