C ++将字符串转换为float

时间:2016-11-23 12:41:03

标签: c++ string

我正在尝试将基于字符串的数字转换为float。不幸的是,我得到了舍入值或截断值。我该如何解决这个问题。

    std::string text = "199102.92";
    float v = std::stof(text);
    std::cout<<v<<std::endl;

这导致199103 即使我使用setprecision并修复它然后它只影响输出流但传递给float变量的值仍然是199103.我怎么能解决这个问题。

我也在c ++中使用了stringstream,但结果似乎是相同的,只是它显示得很好。

我需要将小数保留到2个位置。

我使用了stof,stod,他们都做同样的事情。

您可能认为我正在使用货币。

1 个答案:

答案 0 :(得分:1)

我认为您错误地使用了std::setprecisionstd::fixed

以下为我效劳:

#include <iostream>
#include <iomanip>
#include <string>


string text = "199102.92";
float v = std::stof(text);
std::cout << std::setprecision(2) << std::fixed << v << std::endl;

结果是199102.92

编译器信息:g ++ 5.4.0, - std = c ++ 11。