我需要一种方法将此字符串转换为其确切的数字表示。我已经尝试了很多东西,据我所知,这应该有效(着名的遗言)。我试图远离安装库,我有很多这些数字要转换。
我知道很难用二进制表示长十进制数,但我需要一个解决方案。
#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
string data = "138.6470184568";
cout << atof(data.c_str()) << endl;
return 0;
}
输出
138.647
答案 0 :(得分:0)
原来它正确转换,但是,当被要求输出数字时,它只给出3-4个小数位。谁知道为什么?
#include <iostream>
#include <stdlib.h>
#include <iomanip>
using namespace std;
int main()
{
string data1 = "138.6470184568";
string data2 = "138.6470184568";
double data3 = atof(data1.c_str()) + atof(data2.c_str());
cout << data3 << endl;
cout << setprecision(15) << data3;
return 0;
}
给出
277.294
277.2940369136