0

我需要一种方法将此字符串转换为其确切的数字表示形式。我已经尝试了很多东西,据我所知,这应该有效(著名的遗言)。我试图远离安装库,我有很多这些数字要转换。

我知道用二进制表示长十进制数字很困难,但我需要一个解决方案。

#include <iostream>
#include <stdlib.h>

using namespace std;

int main()
{
   string data = "138.6470184568";
   cout << atof(data.c_str()) << endl;

   return 0;
}

输出

138.647
4

1 回答 1

-1

结果证明它转换正确,但是当被要求计算数字时,它只给出 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
于 2014-11-19T00:28:31.637 回答