Saltar al contenido

¿Qué tipo de datos usar para el dinero en Java?

Es importante comprender el código bien previamente a adaptarlo a tu trabajo y si tquieres aportar algo puedes decirlo en los comentarios.

Solución:

Java tiene Currency clase que representa los códigos de moneda ISO 4217.
BigDecimal es el mejor tipo para representar valores decimales de moneda.

Joda Money ha proporcionado una biblioteca para representar el dinero.

Puedes usar API de dinero y divisas (JSR 354). Puede usar esta API, siempre que agregue las dependencias adecuadas a su proyecto.

Para Java 8, agregue la siguiente implementación de referencia como una dependencia a su pom.xml:


    org.javamoney
    moneta
    1.0

Esta dependencia agregará transitivamente javax.money:money-api como dependencia.

A continuación, puede utilizar la API:

package com.example.money;

import static org.junit.Assert.assertThat;
import static org.hamcrest.CoreMatchers.is;

import java.util.Locale;

import javax.money.Monetary;
import javax.money.MonetaryAmount;
import javax.money.MonetaryRounding;
import javax.money.format.MonetaryAmountFormat;
import javax.money.format.MonetaryFormats;

import org.junit.Test;

public class MoneyTest 

    @Test
    public void testMoneyApi() 
        MonetaryAmount eurAmount1 = Monetary.getDefaultAmountFactory().setNumber(1.1111).setCurrency("EUR").create();
        MonetaryAmount eurAmount2 = Monetary.getDefaultAmountFactory().setNumber(1.1141).setCurrency("EUR").create();

        MonetaryAmount eurAmount3 = eurAmount1.add(eurAmount2);
        assertThat(eurAmount3.toString(), is("EUR 2.2252"));

        MonetaryRounding defaultRounding = Monetary.getDefaultRounding();
        MonetaryAmount eurAmount4 = eurAmount3.with(defaultRounding);
        assertThat(eurAmount4.toString(), is("EUR 2.23"));

        MonetaryAmountFormat germanFormat = MonetaryFormats.getAmountFormat(Locale.GERMAN);
        assertThat(germanFormat.format(eurAmount4), is("EUR 2,23") );
    

Un tipo integral que representa el valor más pequeño posible. En otras palabras, su programa debe pensar en centavos, no en dólares/euros.

Esto no debería impedir que la interfaz gráfica de usuario lo traduzca de nuevo a dólares/euros.

Tienes la opción de avalar nuestra faena añadiendo un comentario y puntuándolo te damos las gracias.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *