1

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

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 库,有没有办法更好地做到这一点?我想要更高的精度。尽可能高。

4

2 回答 2

3

double正确解析,但您很可能以错误的精度看到它。你如何输出它?根据您的需要调整精度,就可以了。

此外,您应该知道浮点数不能总是在内存中准确表示,因此在使用floator doubles 时可能会出现(微小的)舍入错误。但是你通常可以放心地忽略这些,除非你打算向月球发射火箭。

于 2013-03-09T20:35:55.947 回答
2

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

stod = S字符串 D ouble

double myDouble = std::stod(myString);

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

如果需要更高的精度,您可以使用 std::stold 进行长双精度数。

于 2013-03-09T22:27:24.250 回答