0

そのような文字列があるとします(実際には、この値を別の場所から取得しています)

std::string val = "2.31";

今、私はこのようなことをしています

float f = atof(val);

f は 2.31xxxxxxxxxxx のようなものになりました

小数点以下2桁を取得する方法について何か提案はありますか? f が 2.3100000 のように見えるように...

4

3 に答える 3

1

float のすべての入力に対して正確な値を取得することはできません。これは、コンピューターでの浮動小数点の表現によるものです。==それが、フロートでできない理由でもあります。精度が必要な場合は、他の形式 (BCD ?) を使用する必要があります。

于 2013-08-26T18:21:47.857 に答える
1

2 進浮動小数点は、小数の 10 進数値を正確に表すことができません。floatほとんどの場合、 a に格納される値は近似値になります。ただし、印刷に適切なアルゴリズムを使用すると、使用されている桁数が 1 桁以下の場合、元の桁数が復元std::numeric_limits<float>::digits10されます。

于 2013-08-26T18:22:34.910 に答える