转换字符串十进制数时的精度
Precision when converting a string decimal number
我需要一种方法来将此字符串转换为其确切的数字表示形式。我已经尝试了很多事情,据我所知,这应该有效(著名的遗言)。我试图远离安装库,我有很多这样的数字要转换。
我知道很难用二进制表示长十进制数,但我需要一个解决方案。
#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
string data = "138.6470184568";
cout << atof(data.c_str()) << endl;
return 0;
}
输出
138.647
事实证明,它转换正确,但是,当被要求引用数字时,它只给出 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
相关文章:
- visual在c++中将十进制数转换为二进制数
- C++从二进制转换为十进制数
- 为什么有时我输入一个整数,程序将第一个输入的数字打印成十进制数?
- 将分数转换为十进制数并对其进行排序
- 使用标准库计算字符串中的十进制数
- (第 1 位 + 第 2 位)以十进制数表示
- 如何通过输入十进制数打印UTF-8符号?
- 如何使用链表将负十进制数转换为二进制?
- 二进制反转为十进制数
- 以C++格式将十六进制字符串转换为十进制数
- 如何在C++中使用setiosflags打印出十进制数作为八进制数
- 将字节数组转换为 C++ 中的十进制数
- 为什么如果(!(cin >> int)) 在第一次迭代中接受十进制数,但不接受其他十进制数?
- 在 c++ 中使用 setfill() 以特定格式打印十进制数
- 您能否给我一个 16 位(或更多)十进制数,该十进制数仅在第 15 位正确转换为双精度浮点圆
- 使用堆栈将十进制数转换为二进制数
- 如何确定十进制数的完美幂?
- 将浮点数转换为字符串,并指定精度和十进制数字数?
- 转换字符串十进制数时的精度
- 双精度的有效十进制数