From 6a58bfe9b29d4a2096703f10b9d03e1fa150ade2 Mon Sep 17 00:00:00 2001 From: asukavuuyn <1346007099@qq.com> Date: Mon, 16 Jun 2025 23:42:17 +0800 Subject: [PATCH] fix(Money): currency scaling bug --- .../src/main/java/cn/hutool/core/math/Money.java | 2 +- .../src/test/java/cn/hutool/core/math/MoneyTest.java | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/hutool-core/src/main/java/cn/hutool/core/math/Money.java b/hutool-core/src/main/java/cn/hutool/core/math/Money.java index ecefdadac..6a9f6e029 100644 --- a/hutool-core/src/main/java/cn/hutool/core/math/Money.java +++ b/hutool-core/src/main/java/cn/hutool/core/math/Money.java @@ -294,7 +294,7 @@ public class Money implements Serializable, Comparable { */ public void setAmount(BigDecimal amount) { if (amount != null) { - cent = rounding(amount.movePointRight(2), DEFAULT_ROUNDING_MODE); + cent = rounding(amount.movePointRight(currency.getDefaultFractionDigits()), DEFAULT_ROUNDING_MODE); } } diff --git a/hutool-core/src/test/java/cn/hutool/core/math/MoneyTest.java b/hutool-core/src/test/java/cn/hutool/core/math/MoneyTest.java index 03a76aaeb..873d09675 100644 --- a/hutool-core/src/test/java/cn/hutool/core/math/MoneyTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/math/MoneyTest.java @@ -2,6 +2,8 @@ package cn.hutool.core.math; import static org.junit.jupiter.api.Assertions.*; import org.junit.jupiter.api.Test; +import java.math.BigDecimal; +import java.util.Currency; public class MoneyTest { @@ -20,4 +22,12 @@ public class MoneyTest { assertEquals(1234.56D, MathUtil.centToYuan(123456), 0); } + + @Test + public void currencyScalingTest() { + Money jpyMoney = new Money(0, Currency.getInstance("JPY")); + jpyMoney.setAmount(BigDecimal.ONE); + assertEquals(1, jpyMoney.getCent()); + } + }