0

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

std::string val = "2.31";

现在我正在做这样的事情

float f = atof(val);

现在 f 有类似 2.31xxxxxxxxxxxx 的东西

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

4

3 回答 3

1

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

于 2013-08-26T18:21:47.857 回答
1

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

于 2013-08-26T18:22:34.910 回答
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; 
 }
于 2013-08-26T18:19:29.860 回答