在Java中用什么数据类型来赚钱?[已关闭]

2022-08-31 05:59:12

在Java中,你应该使用什么数据类型来赚钱?


答案 1

Java 具有表示 ISO 4217 货币代码的 Currency 类。 是表示货币十进制值的最佳类型。BigDecimal

Joda Money提供了一个图书馆来代表金钱。


答案 2

您可以使用货币和货币 API (JSR 354)。只要向项目添加适当的依赖项,就可以在 中使用此 API。

对于 Java 8,将以下参考实现作为依赖项添加到您的:pom.xml

<dependency>
    <groupId>org.javamoney</groupId>
    <artifactId>moneta</artifactId>
    <version>1.0</version>
</dependency>

此依赖项将作为依赖项以传递方式添加。javax.money:money-api

然后,您可以使用该 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") );
    }
}