BigDecimal 怎么比较大小

BigDecimal怎么比较大小... BigDecimal 怎么比较大小 展开
 我来答
鹰志说生活
高能答主

2021-08-25 · 专注于分享生活经验,科普生活小常识
鹰志说生活
采纳数:1175 获赞数:86279

向TA提问 私信TA
展开全部

BigDecimal比较大小使用compareTo(BigDecimal)方法:

int flag = bigdemical.compareTo(bigdemical1)。

flag = -1,表示bigdemical小于bigdemical1。

flag =0,表示bigdemical等于bigdemical1。

flag =1,表示bigdemical大于bigdemical1。

实际中直接跟0比较就可以了,别跟-1或者1比较。

构造方法

BigDecimal一共有4个构造方法:

BigDecimal(int) 创建一个具有参数所指定整数值的对象。

BigDecimal(double) 创建一个具有参数所指定双精度值的对象。(不建议采用)

BigDecimal(long) 创建一个具有参数所指定长整数值的对象。

BigDecimal(String) 创建一个具有参数所指定以字符串表示的数值的对象。

AiPPT
2024-12-03 广告
作为北京饼干科技有限公司的一员,对于市场上各类工具都有所了解。就AiPPT而言,它确实为用户提供了便捷高效的PPT制作体验。通过智能化的辅助功能,用户能够快速生成专业且富有创意的演示文稿,极大地节省了时间和精力。无论是对于个人用户还是企业团... 点击进入详情页
本回答由AiPPT提供
ray聊教育
高能答主

2021-08-28 · 解答你所关心的各种问题
ray聊教育
采纳数:5256 获赞数:1327363

向TA提问 私信TA
展开全部

BigDecimal比大小,需要声明两个BigDecimal类型变量b1和b2,调用equals()方法比较大小。

BigDecimal a = new BigDecimal("1.00");

BigDecmial b = new BigDecimal(1);

想比较一下a和b的大小,一般都会用equals。

BigDecimal其他情况简介。

使用BigDecimal类构造方法传入double类型时,计算的结果也是不精确的。因为不是所有的浮点数都能够被精确的表示成一个double 类型值,有些浮点数值不能够被精确的表示成 double 类型值,因此它会被表示成与它最接近的 double 类型的值。必须改用传入String的构造方法。这一点在BigDecimal类的构造方法注释中有说明。

BigDecimal向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则向相邻的偶数舍入。如果舍弃部分左边的数字为奇数,则舍入行为与 ROUND_HALF_UP 相同。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ヤマザキ266e77
推荐于2018-02-22 · TA获得超过2052个赞
知道小有建树答主
回答量:721
采纳率:0%
帮助的人:1005万
展开全部
可以通过BigDecimal的compareTo方法来进行比较。
返回的结果是int类型,-1表示小于,0是等于,1是大于。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ardo_pass
推荐于2018-09-20
知道答主
回答量:2
采纳率:100%
帮助的人:2140
展开全部
BigDecimal a = new BigDecimal("1.00");
BigDecmial b = new BigDecimal(1);
想比较一下a和b的大小,一般都会用equals
System.out.println(a.equals(b));
但是输出结果是:false
原因是:BigDecimal比较时,不仅比较值,而且还比较精度?
if(a.compareTo(b)==0) 结果是true
比较大小可以用 a.compareTo(b)
返回值 -1 小于 0 等于 1 大于
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bertlinsf3ad4
2018-07-20 · TA获得超过255个赞
知道答主
回答量:175
采纳率:66%
帮助的人:25.1万
展开全部
当然是使用compareTo:
new BigDecimal(1).compareTo(new BigDecimal("1.0"))
但是,注意:
compareTo 其实也有坑。如果试用:new BigDecimal(1) 与new BigDecimal("1.00"),结果是true. 但是换成 new BigDecimal(1.2).compareTo(new BigDecimal("1.20")),结果就是false.
这时问题又来了。所以保险的办法是把小数位去掉再比较。比如*100。都升到个位数。或者统一使用setScale定好小数位。
我之前就不知这个坑,搞了好久。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式