转换字符串十进制数时的精度

时间:2014-11-18 23:14:10

标签: c++ string type-conversion floating-point-precision atof

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

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

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

using namespace std;

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

   return 0;
}

输出

138.647

1 个答案:

答案 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