0

小数点以下 2 桁以下の数値レコードを含む csv ファイルを読み取るクラスがあります。

int ReadCellWithFloat(int cellNumber, int multiplier) throw (FSByFieldException)
{
    GoToCell( cellNumber );
    float number;
    FileStream >> number;
std::cout << "what we've got: " << number;
    if ( !FileStream.good() )
    {
        throw BuildException( FSByFieldException::NOT_FLOAT );
    }
    while ( multiplier-- )
    {
        number *= 10;
    }
std::cout << ' ' << number << ' ' << (int) number << std::endl;
    PassCell(); // here meaning pass comma separator
    return (int) number;
}

float "8.49" を含むセルの場合、出力は次のようになります。

what we've got: 8.49 849 848

整数へのキャストで 849 が 848 になるのはなぜですか? それを修正する方法は?

4

3 に答える 3