【发布时间】:2023-04-01 03:03:01
【问题描述】:
我需要一种方法来将此字符串转换为其确切的数字表示形式。我已经尝试了很多事情,据我所知,这应该有效(著名的遗言)。我试图远离安装库,我有很多这些数字要转换。
我知道用二进制表示长十进制数字很困难,但我需要一个解决方案。
#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
string data = "138.6470184568";
cout << atof(data.c_str()) << endl;
return 0;
}
输出
138.647
【问题讨论】:
-
转换后你打算如何处理它们?你在使用 GCC 吗?看起来它在不需要库的情况下内置了某种十进制支持 - stackoverflow.com/questions/14096026/…
-
该值是否可以精确存储为二进制不取决于十进制的长度,而是它是否可以用二进分数表示。例如 0.1 虽然很短,但不能用二进制正确表示,但 0.000244140625 可以
-
并且不要使用
atof和atoi。这是不安全的。请改用strtod,因为它提供错误检查 -
要更精确地打印出值,请使用this way
标签: c++ string type-conversion floating-point-precision atof