【问题标题】:Float to String: What is an Exponent part?浮点到字符串:什么是指数部分?
【发布时间】:2009-05-28 13:42:11
【问题描述】:

我用 C 语言编写了一个小函数,它的工作几乎与标准函数 `fcvt' 相同。你可能知道,这个函数接受一个浮点数/双精度并创建一个字符串,用 ANSI 字符表示这个数字。一切正常;-)

例如,对于数字 1.33334,我的函数给了我字符串:“133334”,并设置了特殊的整数变量 `decimal_part',在这个例子中将是 1,这意味着小数部分只有 1 个符号,其他都是分数.

现在我很好奇如何执行标准 C 函数 `printf'。它可以采用 %a 或 %e 作为格式字符串。让我引用 %e(链接已被垃圾):

“double”参数以科学计数法输出

[-]m.nnnnnne+xx

...指数总是包含两位数。

它说:“指数总是包含两位数”。但什么是指数?这是主要问题。还有,如何从我上面的函数或“fcvt”中获得这个“指数”。

【问题讨论】:

    标签: string math floating-point exponent


    【解决方案1】:

    如果我们扩展 e: 符号可能会更好地解释:

    [-]m.nnnnnn * (10^xx)
    

    所以你有一个数字的 m(从 0 到 9,但如果整个值为 0,它只会是 0)和几个数字的 n。我想最好用例子来展示:

    1 = 1.0000 * 10^0 = 1e0
    10 = 1.0000 * 10^1 = 1e1
    10000 = 1.0000 * 10^4 = 1e4
    0.1 = 1.0000 * 10^-1 = 1e-1
    
    1,419 = 1.419 * 10^3 = 1.419e3
    0.00000123 = 1.23 * 10^-5 = 1.23e-5
    

    您可以在 Google 上查找科学计数法,但它对于表示非常大或非常小的数字很有用,例如 1232100000000000000 将是 1.2321e24(我实际上没有数过,指数可能不准确)。

    在 C 语言中,我认为您实际上可以从前 12 位中提取指数(第一个是您必须忽略的符号)。见:IEEE758-1985 Floating Point

    【讨论】:

      【解决方案2】:

      指数是 10 的幂,然后乘以底数。

      SI 在 wikipeida 上进行了解释。 http://en.wikipedia.org/wiki/Scientific_notation

      m.nnnnnne+xx 逻辑上等于m.nnnnnn * 10 ^ +xx

      【讨论】:

        【解决方案3】:

        在科学计数法中,指数是 XX 的 10 次方,因此 1234.5678 可以表示为 1.2345678E03,其中归一化形式乘以 10^3 得到“真实”答案。

        【讨论】:

          【解决方案4】:

          400 = 4 * 10 ^ 2

          2 是指数。

          【讨论】:

            【解决方案5】:

            如果你用科学记数法写一个数字,那么指数就是该记数法的一部分。

            你可以在这里看到完整的描述http://en.wikipedia.org/wiki/Scientific_notation,但基本上它只是写数字的另一种方式,通常用于非常大或非常小的数字。

            假设你有数字 300,它等于 3 * 100,或者科学计数法中的 3 * 10^2。

            如果你使用 %e,它将被打印为 3.0e+02

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2020-09-18
              • 1970-01-01
              • 1970-01-01
              • 2022-10-01
              • 2022-11-13
              • 2016-01-03
              • 2013-10-03
              • 1970-01-01
              相关资源
              最近更新 更多