我正在尝试将基于字符串的数字转换为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,它们都做同样的事情。
您可能会认为我正在使用货币。
最佳答案:
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。