1

一部の C プログラムを呼び出してテキスト編集を行う perl アプリケーションの問題をデバッグしようとしています。

BATCH_JV_CSH_MAX は、金額フィールドの最大値をテストするために使用されます。現在、金額が 99,999,999.99 を超えるとエラーが表示されます。999,999,999.99 までの値を受け入れることになっています。とにかく、それはドキュメントに記載されていることです。

これはインクルードファイルにあります:

#define PROJ_SZ 6
#define REF_SZ  9
#define DESC_SZ 22
#define TRAN_AMT_MAX  9999999999e0
#define BATCH_AMT_MAX 9999999999e0
#define BATCH_JV_CSH_MAX 99999999999e0
#define BATCH_CNT_MAX 99999

プログラムがどのように機能するかはまだわかりません。おそらく、数値以外の値を取り除き、文字を連結します。続行する前に、金額の末尾にある「e0」の意味を知りたいです。このグループに質問する前に、Safari でいくつかの C プログラミングの本をテキスト検索しました。

この値はエラー メッセージに出力されるため、'999999999' は 1e9 よりも意味があります。

値は次のように使用されます。

/* Batch total amount 1 - debit dollars */
/* Check for overflow */

if (fabs(get_tot_amt1()) > BATCH_JV_CSH_MAX)
{
    fprintf(stderr, "\n*** Error: Transaction debit amount overflow\n");

    fprintf(stderr, "\n***        Maximum expected: %.0f\n",
        BATCH_JV_CSH_MAX);

    return (FALSE);
}

sprintf(in_batch_sum.batch_debit_amt, "%011.0f", get_tot_amt1());

get_tot_amt1() は、別の C プログラムで計算された値 tot_amt1 を取得します。「スタティックダブル」です。

うん、やるべき仕事がたくさんある。これは、スペースで区切られたレコードを読み取り、固定形式のレコードを書き出すプロセスの一部です。

ありがとう。キャシー

4

8 に答える 8

10

0の指数を意味し5e0ます5 x 10^0 == 5 x 1 == 5。マクロは、数値に float 型を与えるためだけにそのように定義されていると思います (単に5.0orを使用する代わりに5f)。

于 2009-04-20T19:12:25.190 に答える
2

それは科学表記法です

于 2009-04-20T19:12:33.193 に答える
2

99999999999e0 は浮動小数点定数です。末尾の「e0」は「*10^0」を意味します。あれは

1e2 = 100.0
1e-1 = .1
1e0 = 1.0

于 2009-04-20T19:12:57.667 に答える
1

値 9999999999e0 は、科学表記法を表す C の方法です。

9999999999 * 10^0

したがって、1,000,000,000.00 までの数値を許可する場合は、

#define BATCH_JV_CSH_MAX 1e9

どちらがはるかに読みやすいですか、IMO。ただし、フルバージョンを希望する場合は、次を使用できます

#define BATCH_JV_CSH_MAX 1000000000e0
于 2009-04-20T19:15:49.503 に答える
0

科学表記法です。「10 の 0 乗」、または 1 倍という意味です。

于 2009-04-20T19:12:33.957 に答える
0

http://en.wikipedia.org/wiki/Scientific_notation#E_notation

于 2009-04-20T19:13:20.663 に答える
0

999999999e0 は浮動小数点表現です。0 は 10 の指数です。

9e0 == 9

于 2009-04-20T19:13:36.107 に答える
0

確かに指数のように見えます:

NUMex - NUM x 10 ^x

たとえば、12.345e2 = 1234.5

于 2009-04-20T19:16:45.037 に答える