Problema de precisión de números en IDL: es necesario definir una matriz de tipo de punto flotante, como 40411323.654, 42583654.878 y operar en ella.
Se puede definir así
a=dlbarr(2)
a[0] = 40411323.654d
a[1] = 42583654.878d
O simplemente define a = [40411323.654d,42583654.878d]
Si no escribes d, el número decimal por defecto es el tipo de punto flotante, perdiendo así precisión
Para alguien como su caso, IDL primero analiza 40411323.654 en un tipo de punto flotante, que es 40411323.654, se convierte en un tipo de punto flotante, que es 40411324.000, y luego lo convierte en doble, que ha perdido precisión en el paso anterior. /p>
Puedes usar print,a,format='( f0.3)' para ver los tres dígitos significativos después del punto decimal
.