2

現在、私はこのようなものを持っています

float a = SomeQString.toFloat(); //QString has 2.37

現在、フロートは 2.3690000031..

私が欲しいのは2.3700000000です..どうすればそれができるかについての提案はありますか? また、2.37 ではなく 2.369 になっているのはなぜですか?

4

3 に答える 3

5

(何度も聞かれて説明されています。) 入ることはできませ2.37float2.37に入ることができませんdouble2.37IEEE-754 スタイルのバイナリ浮動小数点形式を取得することはできません。2.37このようなバイナリ浮動小数点形式では正確に表現できません。

すべてのコンピューター科学者が浮動小数点演算について知っておくべきことを読む

「取得」する実行可能な方法の 1 つ2.37は、実際にそれ2.369...を aに格納し (これは既に行っていることです) 、10 進表現を生成する必要がある時点、つまり提示する必要がある時点でfloat丸めることです。 2.37/ユーザーに値を出力します。

于 2013-08-31T06:20:01.623 に答える
2
#include <string>
#include <sstream>

int main(void)
{
    std::string QString = "2.37";
    std::istringstream StrToFloat(QString );
    float floatVar;
    StrToFloat >> floatVar;

    return 0;
}
于 2013-08-31T06:17:12.297 に答える