将浮点字符串转换为浮点数

时间:2013-08-26 18:15:04

标签: c++

说我有一个字符串(我实际上从其他地方得到这个值)

std::string val = "2.31";

现在我正在做这样的事情

float f = atof(val);

现在f有2.31xxxxxxxxxxx

之类的东西

关于如何在小数点后得到两个位置的任何建议?这样f看起来像2.3100000 ......

3 个答案:

答案 0 :(得分:1)

你永远无法获得float中每个输入的确切值。这是由于计算机中浮点的表示。这就是为什么你不能在浮标上做==的原因。如果你想要精确度,你将不得不使用其他格式(BCD?)

答案 1 :(得分:1)

二进制浮点不能精确地表示小数,十进制值。在大多数情况下,存储在float中的值将是近似值。但是,如果使用的数字不超过std::numeric_limits<float>::digits10,使用正确的打印算法将恢复原始数字。

答案 2 :(得分:0)

template <typename T>
T val(const std::string& s)
{
    T x;   
    std::stringstream ss;
    ss  << s;
    ss >> x;
   return x;
}

int main() {
float f =val<float>("2.31");
std::cout<<f; 
 }