我一直在研究一个问题,即我将浮点数转换为人类可读格式,然后返回。即一个字符串。我使用stringstream遇到了问题,发现atof会产生“更好”的结果。
注意,在这种情况下我不打印数据,我使用调试器来检索值:
const char *val = "73.31";
std::stringstream ss;
ss << val << '\0';
float floatVal = 0.0f;
ss >> floatVal; //VALUE IS 73.3100052
floatVal = atof(val); //VALUE IS 73.3099976
对此可能有一个合理的解释。如果有人能够启发我,我会很高兴:)。