我有一个字符串,例如“ 6544556E + 17”。 我必须将其转换为没有指数格式的字符串,例如“ 654455600000000000000000”。
如何在C语言中执行此操作?
注意:在C ++中不存在,因为该问题先前被错误地标记。
答案 0 :(得分:1)
尝试使用atof
将字符串转换为双精度,然后将其转换回字符串(同时使用std::fixed
确保避免使用科学计数法。)
#include <sstream>
std::string str = "6544556E+17";
double d = atof(str.c_str());
std::ostringstream strs;
strs << std::fixed << d;
std::string no_scientic_str = strs.str();
答案 1 :(得分:1)
您可以尝试使用std::fixed
和std::setprecision
显示没有小数点和指数形式的浮点数。
std::ostringstream str;
str << std::fixed << std::setprecision(0) << 6544556E+17 << std::endl;
std::string s = str.str();
但是,在我的计算机上,我没有在s
中收到“ 654455600000000000000000”。我得到“ 654455599999999987941376”。我猜想使用IEEE浮点表示不能精确表示654455600000000000000000。我不确定您将采用哪种逻辑将“ 6544555999999999999987941376”转换为“ 654455600000000000000000”。