Domanda

Sto cercando di eseguire il debug di un problema con un'applicazione perl che chiama alcuni programmi C per fare la modifica del testo.

BATCH_JV_CSH_MAX è utilizzato per verificare il valore massimo di un campo quantità. Attualmente indica un errore se l'importo è superiore a 99,999,999.99. Is dovrebbe accettare i valori fino a 999,999,999.99. Beh, questo è ciò che è riportata nella documentazione, in ogni caso.

Qui è in file di inclusione:

#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

Non so ancora come funziona il programma. Probabilmente strisce fuori un valore diverso da un numero e concats i personaggi. Voglio sapere qual è il 'e0' alla fine della quantità significa prima di continuare. Ho fatto una ricerca di testo in un paio di libri di programmazione C in Safari, prima ho deciso di chiedere a questo gruppo.

Questo valore viene stampato un messaggio di errore cosi '999999999' è più significativo di 1E9

Il valore viene utilizzato in questo modo:

/* 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 () ottiene un tot_amt1 valore, che è stato calcolato in un altro programma c. Si tratta di "doppio statico".

Yup, ho un sacco di lavoro da fare. Questo fa parte di un processo che legge in un record delimitato spazio e scrive un record di formato fisso.

Grazie. Cathy

È stato utile?

Soluzione

Ciò significa un esponente 0. Quindi 5e0 è 5 x 10^0 == 5 x 1 == 5. Credo che le macro sono definite come quella solo per dare i numeri di un tipo galleggiante (in alternativa a utilizzando solo 5.0 o 5f.)

Altri suggerimenti

è il

99999999999e0 è una costante in virgola mobile. il "e0" alla fine significa "* 10 ^ 0". Questo è il

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

ecc.

Il valore 9999999999e0 è il modo di C di rappresentare la notazione scientifica di

9999999999 * 10^0

Quindi, se si desidera consentire i numeri fino a 1.000.000.000,00, è possibile utilizzare

#define BATCH_JV_CSH_MAX 1e9

che è molto più facile da leggere, IMO. Ma se si preferisce la versione completa, è possibile utilizzare

#define BATCH_JV_CSH_MAX 1000000000e0

E 'la notazione scientifica. Significa "dieci volte al potere zeroth", o tempi 1.

999999999e0 è una rappresentazione in virgola mobile. 0 è l'esponente di 10.

9e0 == 9

Certo si presenta come un esponente:

Numex - NUM x 10 ^ x

Per esempio, 12.345e2 = 1234.5

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top