"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo manejar el formato de moneda en Golang?

¿Cómo manejar el formato de moneda en Golang?

Publicado el 2024-11-08
Navegar:546

How to Handle Currency Formatting in Golang?

Formato de moneda adecuado en Golang

Al trabajar con formato de moneda, es esencial considerar los requisitos específicos para cada combinación de moneda e idioma. Con golang.org/x/text/currency, puede formatear valores fácilmente según las convenciones locales. Sin embargo, puede encontrar algunos desafíos para obtener el resultado deseado.

Uso de símbolos de moneda

En su código, utiliza moneda.Símbolo para recuperar el símbolo de moneda para el código ISO especificado. Sin embargo, al utilizar este método sin proporcionar un contexto de idioma, es posible que no obtenga los separadores o el formato de número esperados.

Incorporación de formatos locales

En lugar de intentar crear manualmente su formato, puede aprovechar los paquetes de visualización y mensajes para recuperar automáticamente el formato apropiado según el idioma y la región. A continuación se muestra un ejemplo:

import (
    "fmt"

    "golang.org/x/text/currency"
    "golang.org/x/text/language"
    "golang.org/x/text/message"
)

func formatCurrency(value int64, currencyCode string, languageCode string) string {
    lang, _ := language.Parse(languageCode)
    p := message.NewPrinter(lang)

    unit, _ := currency.ParseISO(currencyCode)
    return p.Sprintf("%v%v", currency.Symbol(unit), float64(value))
}

Esta función toma un valor, un código de moneda y un código de idioma y devuelve una cadena de moneda con el formato adecuado.

Manejo de unidades de incremento

Algunas Las monedas tienen una unidad de incremento fija, como 5 o 10 centavos. Para tener en cuenta esto, puede utilizar el paquete numérico para especificar el incremento:

import (
    "golang.org/x/text/currency"
    "golang.org/x/text/number"
)

func formatWithIncrement(value int64, currencyCode string, increment int) string {
    unit, _ := currency.ParseISO(currencyCode)
    scale, inc := currency.Cash.Rounding(unit)
    dec := number.Decimal(float64(value), number.Scale(scale), number.IncrementString(fmt.Sprintf("%.2f", float64(inc))))
    return fmt.Sprintf("%v%v", currency.Symbol(unit), dec)
}

Al proporcionar el contexto del idioma, inferir el formato de moneda a partir de códigos de idioma y considerar unidades de incremento, puede crear soluciones de formato de moneda flexibles y precisas en Golang usando golang.org/x/text/currency.

Declaración de liberación Este artículo se reimprime en: 1729688989 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3