4

注: 同様の質問がいくつかあることは知っていますが、ここで尋ねていることに対する答えが見つかりませんでした。

double を std::ostream に出力し、小数点以下 n 桁で +oo または -oo に丸めます。

結果が表現できない可能性があるため、10^n を乗算し、下限または上限を設定してから、結果に 10^-n を乗算することはオプションではありません。

私がこれまでに持っているものは次のとおりです。

#include <iostream>
#include <cfenv>

int main()
{
    double one_third = 1.0/3.0;
    std::cout.precision(4);
    fesetround(FE_DOWNWARD);
    std::cout << one_third << std::endl;
    fesetround(FE_UPWARD);
    std::cout << one_third << std::endl;
}

gcc-4.7.2 の出力は次のとおりです。

0.3333
0.3333

私は期待していました:

0.3333
0.3334

では、このコードの何が問題なのですか?

ありがとう!

4

1 に答える 1