我试过了:
#include <cstdlib>
#include <iostream>
int main ()
{
char *p;
long double l = strtold("12312.12345", &p);
std::cout << l << std::endl; //prints 12312.1
}
如何避免这种舍入?
答案 0 :(得分:1)
您的字符串已正确解析。您可以通过以下方式验证它:
// Remove the integer part ...
std::cout << (l - 12312) << std::endl;
// ... and you get the fractional part correctly displayed:
// 0.12345
因此报告的问题仅仅是输出格式化问题。