0

私は C で小さな関数を書きました。これは、標準関数「fcvt」とほとんど同じ働きをします。ご存知かもしれませんが、この関数は float/double を受け取り、この数値を ANSI 文字で表す文字列を作成します。すべてが機能します;-)

たとえば、数値 1.33334 の場合、私の関数は文字列 "133334" を返し、特別な整数変数 `decimal_part' を設定します。この例では 1 になります。これは、小数部で 1 つの記号のみを意味し、その他はすべて分数です。

今、私は標準的な C 関数 `printf' をどうするかについて興味があります。%a または %e をフォーマット文字列として使用できます。%e を引用させてください (リンクがジャンクされました):

「double」引数は科学表記法で出力されます

[-]m.nnnnnn+xx

... 指数は常に 2 桁です。

それは言った:「指数には常に2桁が含まれます」。しかし、指数とは何ですか? これが主な質問です。また、上記の関数または「fcvt」からこの「指数」を取得する方法。

4

5 に答える 5

2

e を拡張すると、表記法がよりよく説明される可能性があります。

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

したがって、1 桁の 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 浮動小数点

于 2009-05-28T13:51:11.373 に答える
0

指数は、10 を累乗して基数を掛けたものです。

SI は wikipeida で説明されています。http://en.wikipedia.org/wiki/Scientific_notation

m.nnnnnne+xx論理的に等しいm.nnnnnn * 10 ^ +xx

于 2009-05-28T13:47:37.620 に答える
0

400 = 4 * 10 ^ 2

2 は指数です。

于 2009-05-28T13:48:06.920 に答える
0

科学表記法では、指数は 10 の XX 乗であるため、1234.5678 は 1.2345678E03 として表すことができ、正規化された形式に 10^3 を掛けて「実際の」答えを得ることができます。

于 2009-05-28T13:49:59.613 に答える
0

数値を科学表記法で書く場合、指数はその表記法の一部です。

ここで完全な説明を見ることができますhttp://en.wikipedia.org/wiki/Scientific_notation、しかし基本的には、通常、非常に大きな数または非常に小さな数に使用される、数値を記述する別の方法です。

数値 300 があるとします。これは、3 * 100、または科学表記法で 3 * 10^2 に相当します。

%e を使用すると、3.0e+02 として出力されます

于 2009-05-28T13:55:00.133 に答える