如何避免使用strtold进行舍入

时间:2015-06-21 20:05:08

标签: c++ double

我试过了:

#include <cstdlib>
#include <iostream>

int main ()
{
    char *p;
    long double l = strtold("12312.12345", &p);
    std::cout << l << std::endl; //prints 12312.1
}

demo

如何避免这种舍入?

1 个答案:

答案 0 :(得分:1)

您的字符串已正确解析。您可以通过以下方式验证它:

// Remove the integer part ...
std::cout << (l - 12312) << std::endl;
// ... and you get the fractional part correctly displayed:
// 0.12345

因此报告的问题仅仅是输出格式化问题。