注意:我知道有一些类似的问题,但我在这里找不到我要问的答案。
我想将 double 打印到 std::ostream 向 +oo 或 -oo 舍入 n 位小数。
乘以 10^n、floor'ing 或 ceil'ing,然后将结果乘以 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
那么这段代码有什么问题呢?
谢谢!