长双我有号码科学记数法存储为字符的字符串,其中一些有多达20
位的文本文件。例如,2.3456789e-015
。我需要将其转换为长整数,以便对其执行一些数学运算。如何解析从科学记数法
我该如何做到这一点?
long double number = 2.3456789e-015;
我知道我可以声明长双像这样,但麻烦的是当我有一个字符串的数量和需要分别指定基以及指数。 pow()
函数仅适用于双打和cpowl()
无法格式化为printf
。保持精度非常重要!
长双我有号码科学记数法存储为字符的字符串,其中一些有多达20
位的文本文件。例如,2.3456789e-015
。我需要将其转换为长整数,以便对其执行一些数学运算。如何解析从科学记数法
我该如何做到这一点?
long double number = 2.3456789e-015;
我知道我可以声明长双像这样,但麻烦的是当我有一个字符串的数量和需要分别指定基以及指数。 pow()
函数仅适用于双打和cpowl()
无法格式化为printf
。保持精度非常重要!
尝试double atof(const char*)
。
sscanf(str, "%lf", &number)
了解任何格式。 scanf函数和sscanf允许检查转换的结果:
if(sscanf(str, "%lf", &number))
{
printf("number = %le\n", number);
}
如果你想字符串转换为long double,使用[stold][1]
如果你想printf
长双,使用%Lf
。
['strtold'](http://en.cppreference.com/w/c/string/byte/strtof)对于这份工作来说似乎是一个不错的选择。 – WhozCraig 2015-02-12 06:31:57