我正在尝试将基于字符串的数字转换为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,他们都做同样的事情。
您可能认为我正在使用货币。
答案 0 :(得分:1)
我认为您错误地使用了std::setprecision
和std::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。