精确打印简单双精度值

时间:2017-03-14 07:55:31

标签: c++

这是我的代码,只是一个用浮点数打印数字的基本测试程序,printf效果很好(我猜因为格式是明确传递的)但std::cout我是无法正确行事且std::setprecision似乎没有帮助,你能帮我一把吗?

#include <iostream>
#include <iomanip>

int main ()
{
    std::cout << double(1999999900) / 10000 << std::endl;
    std::cout << std::setprecision(5) << double(1999999900) / 10000 << std::endl;
    printf("%f\n", double(1999999900) / 10000);
    return 0;
}

以下是输出,如何从std::cout打印获得199999.99?

[root@ test00]# g++ -std=c++11 test1.cpp -o test1; ./test1
200000
2e+05
199999.990000

1 个答案:

答案 0 :(得分:2)

使用

std::cout << std::setprecision(5) << std::fixed << double(1999999900) / 10000  << std::endl;