【问题标题】:how to parse a long double from scientific notation如何从科学记数法中解析长双精度数
【发布时间】:2015-02-12 06:26:01
【问题描述】:

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

我怎样才能做到这一点?

long double number = 2.3456789e-015;

我知道我可以像这样声明一个 long double,但是当我将数字作为字符串并且需要分别指定基数和指数时,麻烦就来了。 pow() 函数仅适用于 doublescpowl() 无法在 printf 中格式化。保持精度很重要!

【问题讨论】:

  • strtold 似乎是这份工作的不错人选。

标签: c pow atoi long-double


【解决方案1】:

如果要将字符串转换为长双精度,请使用[stold][1]

如果你想printf long double,请使用%Lf

【讨论】:

    【解决方案2】:

    试试double atof(const char*)

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2017-12-24
        • 1970-01-01
        • 1970-01-01
        • 2011-01-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多