Ich versuche ein Problem mit einer Perl-Anwendung zu debuggen, die einige c-Programme aufruft, um Text zu bearbeiten.Warum 'e0' am Ende einer definierten Konstante in c verwenden?
BATCH_JV_CSH_MAX wird verwendet, um den Maximalwert eines Betragsfelds zu testen. Es zeigt derzeit einen Fehler an, wenn der Betrag über 99,999,999,99 liegt. Es soll Werte bis zu 999.999.999,99 annehmen. Nun, das steht jedenfalls in der Dokumentation.
Hier ist es in der Datei enthalten:
#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
Ich weiß noch nicht, wie das Programm funktioniert. Es löscht wahrscheinlich einen anderen Wert als eine Zahl und bildet die Zeichen. Ich möchte wissen, was das "e0" am Ende des Betrags bedeutet, bevor ich fortfahre. Ich habe eine Textsuche in einigen Programmierbüchern von Safari gemacht, bevor ich mich dazu entschied, diese Gruppe zu fragen.
Dieser Wert wird so in einer Fehlermeldung gedruckt ‚999999999‘ ist aussagekräftiger als 1E9
Der Wert wie folgt verwendet wird:
/* 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() gibt einen Wert tot_amt1 wur berechnet in einem anderen c-Programm. Es ist "statisch doppelt".
Yup, ich habe viel zu tun. Dies ist Teil eines Prozesses, der einen durch Leerzeichen getrennten Datensatz einliest und einen Datensatz mit festem Format ausgibt.
Danke. Cathy
Können Sie bitte den Kontext anzeigen, in dem BATCH_JV_CSH_MAX verwendet wird? Das gleiche Makro kann verschiedene Dinge tun, je nachdem, wie es verwendet wird. –