es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Suprimir la notación científica con locale.format()

Utilizo locale.format() para separar los números con comas, pero esta función no elimina la notación científica. Quiero encontrar una forma de devolver un número separado por comas, con ceros finales y sin notación científica.

Ejemplo de código actual: 1160250.1294254328 -> 1.16025e+06

Lo que deseo: 1160250.1294254328 -> 1,160,250.13

Mi código:

locale.setlocale(locale.LC_ALL, 'en_US.utf8')

x = 1160250.1294254328
x = round(x, 2)
x = locale.format("%g", x, grouping=True, monetary=True)
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para eliminar la notación científica y obtener el resultado deseado, puedes utilizar el especificador de formato %.xf, donde x es el número de decimales que deseas mostrar. Aquí tienes una versión actualizada de tu código que debería lograr el resultado deseado:

    import locale
    
    locale.setlocale(locale.LC_ALL, 'en_US.utf8')
    
    x = 1160250.1294254328
    x = round(x, 2)
    x_str = '%.2f' % x  # convertir en cadena con 2 decimales
    x_formatted = locale.format_string('%s', x_str, grouping=True)  # agregar comas
    print(x_formatted)  # resultado: 1,160,250.13
    

    Ten en cuenta que primero convertimos el número en una cadena con el número deseado de decimales (x_str = '%.2f' % x), y luego utilizamos locale.format_string para agregar comas según la configuración regional actual (x_formatted = locale.format_string('%s', x_str, grouping=True)). Esto debería darte el resultado deseado.

Comments are closed.