You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么不能直接将数字赋值给BigDecimal类型变量

我们可以直接给Integer类型的变量赋值int字面量,写法如下:

Integer a= 12;

但是以下给BigDecimal类型变量直接赋值int字面量的写法是不合法的:

BigDecimal b =12;

具体原因

  • Java 5及以上版本支持自动装箱机制,该机制仅允许基本数据类型自动转换为它对应的包装类对象:int类型的对应包装类就是Integer,所以上述给Integer a直接赋值int字面量12的操作,本质是JVM自动完成了装箱逻辑,不需要手动处理。
  • BigDecimal是java.math包下提供的用于高精度运算的普通类,不属于任何基本数据类型的包装类,JVM没有也不会提供从int到BigDecimal的自动装箱逻辑,因此直接赋值会直接触发编译报错。

正确赋值写法参考

// 方式1:使用valueOf静态方法,推荐用于整型、小数值场景
BigDecimal b = BigDecimal.valueOf(12);
// 方式2:传入字符串构造,推荐用于浮点高精度场景,避免原生浮点精度丢失
BigDecimal c = new BigDecimal("12.34");

内容的提问来源于stack exchange,提问作者Nisal Jayathilaka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 20:06:09