Pregunta

Estoy tratando de depurar un problema con una aplicación Perl que llama a algunos programas c hacer la edición de texto.

BATCH_JV_CSH_MAX se utiliza para probar el valor máximo de un campo de cantidad. En la actualidad, indica un error si la cantidad es más de 99,999,999.99. Es decir se supone que acepta valores hasta 999,999,999.99. Bueno, eso es lo que se indica en la documentación, de todos modos.

Aquí está en el archivo de inclusión:

#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

No sé todavía cómo funciona el programa. Es probable que despoja a cabo cualquier valor que no sea un número y concats los personajes. Quiero saber lo que el 'e0' al final de la cantidad significa antes de continuar. Hice una búsqueda de texto en un par de libros de programación C en Safari antes de que decidiera pedir a este grupo.

Este valor se imprime en un mensaje de error por lo que '999999999' es más significativo que 1E9

El valor se utiliza como esto:

/* 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 () obtiene un tot_amt1 valor que se ha calculado en otro programa c. Se trata de "doble estática".

Sí, tengo mucho trabajo que hacer. Esto es parte de un proceso que lee en un registro delimitado el espacio y escribe un registro de formato fijo.

Gracias. Cathy

¿Fue útil?

Solución

Esto significa un exponente de 0. Así 5e0 es 5 x 10^0 == 5 x 1 == 5. Creo que las macros se definen como la que se acaba de dar los números de un tipo flotador (como una alternativa al uso de solo 5.0 o 5f.)

Otros consejos

es el

99999999999e0 es una constante de coma flotante. la "e0" al final significa "* 10 ^ 0". Es decir

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

etc.

El valor 9999999999e0 es forma de representar la notación científica de de C

9999999999 * 10^0

Así que si desea permitir que los números hasta el 1.000.000.000,00, se podrían utilizar

#define BATCH_JV_CSH_MAX 1e9

Lo que es mucho más fácil de leer, la OMI. Pero si prefiere la versión completa, puede utilizar

#define BATCH_JV_CSH_MAX 1000000000e0

Es la notación científica. Significa "veces diez a la potencia cero", o tiempos 1.

999999999e0 es una representación de punto flotante. 0 es el exponente de 10.

9e0 == 9

Claro se ve como un exponente:

NuMex - NUM x 10 ^ x

Por ejemplo, 12.345e2 = 1234,5

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top