0

私は次のようなことをしようとしています:

stringstream convert1(Model_str.substr(2, 12));
cout << (Model_str.substr(2, 12)) << endl; //output = 0.999999
convert1>>vertex1[VertexCounter];
cout << vertex1[VertexCounter] << endl; //output = 0

配列に配置するときに小数点以下6桁まで正確でない理由はありますか?

4

1 に答える 1

2

intを使用してストリームからを抽出すると>>、の一部と見なされる可能性のある文字がある限り、それが読み取られますintint整数は小数部分を許可しないため、値に小数点はありません。0ストリームからを読み取り、配列要素に格納し(の配列であるとvertex1想定)、残りの文字を入力バッファーに残して、後で読み取る操作で使用できるようにします。vertex1int

ストリームから浮動小数点文字列を読み取る場合は、少なくともfloat、またはなどの浮動小数点値をサポートする型に読み込む必要がありますdouble。期待した正確な値が得られるかどうかは別の問題です。選択したターゲットタイプは、希望する正確な値を表すことができない場合があります。

于 2012-06-22T18:08:59.707 に答える