我使用atof有问题, 这是代码:
#include <stdio.h>
#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;
int main(){
std::string num ("1.0");
//std::string num ("1.1");
cout<< atof(num.c_str());
return 0;
}
如果num字符串是&#34; 1.1&#34; ,它可以正确地cout 1.1。但是如果我想在num字符串为&#34; 1.0&#34;时保持零。 (希望它是1.0而不是1),我该怎么办?
答案 0 :(得分:2)
您需要使用std::fixed和std::setprecision,如下所示:
std::cout<< std::fixed << std::setprecision(1) << atof(num.c_str());
这将要求您添加iomanip标题。
答案 1 :(得分:0)
可能的解决方案是
#include <cstdio>
#include <iostream>
#include <string>
#include <iomanip>
int main() {
std::cout.precision(3);
std::cout.setf(std::ios::fixed);
std::string s("1.0");
float f = 0.0f;
sscanf(s.c_str(), "%f", &f);
// alternative way of setting this flags
// std::cout << std::fixed << std::setprecision(3) << f << "\n";
std::cout << f << "\n";
return (0);
}
请注意,至少有两种方法可以为输出完成相同的格式,我将其中一个注释掉了。