字符串到C ++中的双转换

时间:2013-03-09 20:31:51

标签: c++ type-conversion

以下函数将字符串转换为double,但精度不够。

double stringToDouble(string s) {
    double d;
    stringstream ss(s); //turn the string into a stream
    ss >> d; //convert
    return d;
}

使用stringToDouble(“31.2458782523”)调用时,输出为31.2459。

不使用Boost库有没有办法更好地做到这一点?我想要更高的精确度。尽可能高。

2 个答案:

答案 0 :(得分:3)

double被正确解析,但您最有可能以错误的精度看到它。你怎么输出它?根据您的需要定制精度,一切都会好的。

此外,您应该知道浮点数不能始终在内存中准确表示,因此在使用floatdouble时,您可能会遇到(微小的)舍入错误。但你通常可以放心地忽略这些,除非你计划向月球发射火箭。

答案 1 :(得分:2)

如果您使用的是C ++ 11,则可以使用std::stod

stod = S 转换为 D ouble

double myDouble = std::stod(myString);

这应该提供相对不错的准确度。

如果需要更高的精度,你可以使用std :: stold作为长双精度。