我发现atof
在它将解析的字符串的大小上是有限的。
的例子:
float num = atof("49966.73");
cout << num;
49966.7显示num = atof("499966.73");
cout << num;
显示499966
我需要一些东西,将解析整个字符串准确,为浮点数,而不仅仅是前6个字符。
使用<iomanip>
标准库中的std::setprecision
和std::fixed
,正如评论中提到的那样,由于float
类型缺乏精度,仍然会存在转换问题,为了获得更好的结果,使用double
和std::stod
进行转换:
float num = std::atof("499966.73");
std::cout << std::fixed << std::setprecision(2) << num;
double num = std::stod("499966.73");
std::cout << std::fixed << std::setprecision(2) << num;
第一个打印499966.72
,第二个打印499966.73
。