注: 同様の質問がいくつかあることは知っていますが、ここで尋ねていることに対する答えが見つかりませんでした。
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
では、このコードの何が問題なのですか?
ありがとう!