我已将字符串值转换为浮点数并尝试为其设置精度。设置精度后,我得到的值被截断。
#include<iostream>
#include <bits/stdc++.h>
int main()
{
std::string str ="1570734298.45";
float val= stof(str);
std::cout<<val<<std::endl;
std::cout<<std::fixed<<std::setprecision(6)<<val;
return 0;
}
输出:
1.57073e+09
1570734336.000000
这不依赖于字符串转换。这是
float
数据类型的限制。如果您使用 double
一切正常:
#include<iostream>
#include <string>
#include <iomanip>
int main()
{
std::string str ="1570734298.45";
float val= stof(str);
std::cout<<val<<std::endl;
std::cout<<std::fixed<<std::setprecision(6)<<val << std::endl;
val = 1570734298.45f;
std::cout<<std::fixed<<std::setprecision(6)<<val<< std::endl;
double valD = stod(str);
std::cout<<std::fixed<<std::setprecision(6)<<valD << std::endl;
valD = 1570734298.45;
std::cout<<std::fixed<<std::setprecision(6)<<valD << std::endl;
return 0;
}
输出
1.57073e+09
1570734336.000000
1570734336.000000
1570734298.450000
1570734298.450000