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 pdwith 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. Lo que escribas se queda en este navegador y te espera en tu curso.

Ejemplo 2 de 4, se abre cuando expliques este

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 representa exactamente todos los enteros de 18 dígitos. Algunos sí caben, pero estos folios distintos colisionan. 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.

Tu turno

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.

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ó?