Skip to content
Empieza gratis

¿Por qué mi código de barras sale como 7.501235e+12?

Distingue cuándo la notación científica es solo una forma de mostrar un número y cuándo de verdad se perdieron dígitos, y lee folios y códigos largos sin perder ninguno.

Curso gratis. Tu Maestro, una IA, .

El archivo de inventario trae dos columnas largas: el código de barras de cada producto, de 13 dígitos, y el folio de la factura con que llegó, de 18. Al revisarlo aparecen cosas como 7.501235e+12 o, en Excel, algo con E+. La reacción natural es pensar que el número se echó a perder.

A veces sí y a veces no. Esta página es para que sepas distinguirlo, porque son dos cosas diferentes:

  1. Mostrar un número largo en notación científica. 7.501235e+12 quiere decir 7.501235 por 10 a la 12, o sea, un número de 13 cifras redondeado para caber en pantalla. El valor completo puede seguir ahí.
  2. Guardar un número con menos dígitos de los que tenía. Eso sí es pérdida, y no se arregla cambiando cómo se muestra.

Microsoft documenta los dos en Excel. Excel "convierte los números grandes a notación científica, como 1,23E+15", y además "tiene una precisión máxima de 15 dígitos significativos, lo que significa que para cualquier número que contenga 16 o más dígitos [...] los números que superen el dígito 15 se redondean hacia abajo a cero". Su ejemplo: 12345678901234567890 se convierte en 12345678901234500000, y se muestra como 1,23457E+19.

Un código de barras de 13 dígitos cabe en esos 15; un folio de 18 no. pandas tiene su propia versión de esta historia. Predice:

Cómo lo muestra pandas

Ejemplo 1 de 4

example.py
import pandas as pd

with open("productos.csv", "w", encoding="utf-8") as archivo:
    archivo.write("sku,codigo_barras,folio_factura\n00731,7501234500017,120000004567891234\n01204,,120000004567891235\n00090,7501234500093,\n")

productos = pd.read_csv("productos.csv")
print(productos.dtypes)
print(productos)

Adivinar está bien: se guarda tal como la escribiste para compararla. Solo tú y tu Maestro ven tus predicciones.

Ejemplo 2 de 4, se abre cuando expliques este

Haz tu predicción

Fíjate en la cadena de causas del folio: una sola factura sin folio capturado obligó a pandas a guardar la columna como float64, y ese tipo no alcanza para 18 dígitos. Si la columna no hubiera tenido huecos, pandas la habría leído como entero sin perder nada. Por eso este error es tan traicionero: el mismo script funciona un mes y al siguiente, cuando alguien deja una celda vacía, junta facturas distintas.

La salida es la misma regla de la página anterior: un código de barras o un folio es una etiqueta, no una cantidad. Nunca los vas a sumar. Léelos como texto y te olvidas de cuántos dígitos caben en un número.

Pregúntale a tu Maestro por qué un número con decimales no guarda bien 18 dígitos.

En Excel

En Excel, el límite es de 15 dígitos significativos. Mientras el código tenga 15 o menos, el E+ que ves es la forma de mostrarlo. Con 16 o más, Excel guarda los dígitos de más como ceros, y ya no hay vuelta atrás en esa hoja. Para conservarlos, Microsoft da dos caminos: apagar la conversión automática antes de abrir el archivo, o tratar la columna como texto.

Antes de abrir el archivo: en Archivo > Opciones > pestaña Datos > Conversión automática de datos, deshabilita Mantenga los primeros 15 dígitos de los números largos y visualícelos en notación científica si es necesario. Así, un número de 16 o más dígitos se guarda como texto con todos sus dígitos.

Al capturar: selecciona el rango, presiona Ctrl+1 para abrir Formato de celdas y, en la pestaña Número, elige Texto. O escribe un apóstrofo (') delante del número. Microsoft aclara que el formato Texto no cambia los números que ya estaban escritos.

Antes de abrir el archivo: en Excel > Preferencias > pestaña Editar > Conversión automática de datos, deshabilita Mantenga los primeros 15 dígitos de los números largos y visualícelos en notación científica si es necesario. Así, un número de 16 o más dígitos se guarda como texto con todos sus dígitos.

Al capturar: escribe un apóstrofo (') delante del número para que Excel lo trate como texto. Esto no cambia los números que ya estaban en la hoja.

Un aviso más de Microsoft: si conviertes uno de esos números a un formato numérico, como Moneda, "siempre trunca los datos a 15 dígitos significativos de precisión". Otra razón para que un folio sea texto desde el principio.

Inténtalo

En el archivo de facturas hay tres facturas con folio y una sin capturar. El programa cuenta cuántos folios distintos hay, una revisión común antes de cobrar. Córrelo y compara lo que dice con lo que ves en el archivo. Luego arregla la lectura. Si no entiendes por qué cuenta un solo folio, pregúntale a tu Maestro.

Corre el programa: dice que hay 3 facturas con folio pero solo 1 folio distinto. Cambia la lectura para que folio sea texto. Ya quedó cuando dice 3 folios distintos y la lista muestra los tres folios completos.

Corre el programa: dice que hay 3 facturas con folio pero solo 1 folio distinto. Cambia la lectura para que folio sea texto. Ya quedó cuando dice 3 folios distintos y la lista muestra los tres folios completos.

Ejecuta tu código para ver lo que imprime y el valor de su última expresión. Cada ejecución empieza de nuevo.

Listo para ejecutar tu código.

Ejecuta tu código para ver su salida aquí.

Ejecútalo tú

Comprueba lo que sabes: Abres en pandas un archivo y la columna codigo_barras, de 13 dígitos, se ve como 7.501235e+12. ¿Qué pasó?