現在、私はこのようなものを持っています
float a = SomeQString.toFloat(); //QString has 2.37
現在、フロートは 2.3690000031..
私が欲しいのは2.3700000000です..どうすればそれができるかについての提案はありますか? また、2.37 ではなく 2.369 になっているのはなぜですか?
(何度も聞かれて説明されています。) 入ることはできませ2.37
んfloat
。2.37
に入ることができませんdouble
。2.37
IEEE-754 スタイルのバイナリ浮動小数点形式を取得することはできません。2.37
このようなバイナリ浮動小数点形式では正確に表現できません。
すべてのコンピューター科学者が浮動小数点演算について知っておくべきことを読む
「取得」する実行可能な方法の 1 つ2.37
は、実際にそれ2.369...
を aに格納し (これは既に行っていることです) 、10 進表現を生成する必要がある時点、つまり提示する必要がある時点でfloat
丸めることです。 2.37
/ユーザーに値を出力します。
#include <string>
#include <sstream>
int main(void)
{
std::string QString = "2.37";
std::istringstream StrToFloat(QString );
float floatVar;
StrToFloat >> floatVar;
return 0;
}