如何用科学记数法解析长篇翻译

时间:2015-02-12 06:26:02

标签: c pow atoi long-double

我有一个文本文件,其中科学记数法中的数字存储为字符串字符,其中一些字符最多包含20个数字。例如,2.3456789e-015。我需要将其转换为long double,以便对其执行一些数学运算。

我该如何做到这一点?

long double number = 2.3456789e-015;

我知道我可以像这样声明 long double ,但是当我将数字作为字符串并且需要分别指定基数和指数时,就会遇到麻烦。 pow()功能仅适用于双打,而cpowl()无法在printf中进行格式化。保持精确度非常重要!!

3 个答案:

答案 0 :(得分:2)

如果要将字符串转换为long double,请使用[stold][1]

如果您希望printf加倍,请使用%Lf

答案 1 :(得分:1)

sscanf(str, "%lf", &number)了解任何格式。 scanf和sscanf允许检查转换结果:

    if( sscanf(str, "%lf", &number) )
    {
        printf("number = %le\n", number);
    }

答案 2 :(得分:0)

尝试double atof(const char*)