首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >BigDecimal 比较大小(加减等)

BigDecimal 比较大小(加减等)

作者头像
默 语
发布2024-11-20 08:24:01
发布2024-11-20 08:24:01
2.3K0
举报
文章被收录于专栏:JAVAJAVA

扩充:

BigDecimal比较大小 这个类是java里精确计算的类,下面说一下两个BigDecimal对象大小,相等的判断 1 比较对象是否相等 一般的对象用equals,但是BigDecimal比较特殊,举个例子: BigDecimal a=BigDecimal.valueOf(1.0); BigDecimal b=BigDecimal.valueOf(1.000);

代码语言:javascript
复制
 在现实中这两个数字是相等的,但是如果用
 a.equals(b)结果是false;怎么不相等了呢?因为equals是比较内容,“1.0”和“1.000”当然不一样了

 解决办法:
        if(a.compareTo(b)==0) 结果是true

compareTo() 方法用于两种方式的比较:

字符串与对象进行比较。 按字典顺序比较两个字符串。

参数 o – 要比较的对象。

anotherString – 要比较的字符串。

返回值 返回值是整型,它是先比较对应字符的大小(ASCII码顺序),如果第一个字符和参数的第一个字符不等,结束比较,返回他们之间的长度差值,如果第一个字符和参数的第一个字符相等,则以第二个字符和参数的第二个字符做比较,以此类推,直至比较的字符或被比较的字符有一方结束。

如果参数字符串等于此字符串,则返回值 0; 如果此字符串小于字符串参数,则返回一个小于 0 的值; 如果此字符串大于字符串参数,则返回一个大于 0 的值。

说明: 如果第一个字符和参数的第一个字符不等,结束比较,返回第一个字符的ASCII码差值。 如果第一个字符和参数的第一个字符相等,则以第二个字符和参数的第二个字符做比较,以此类推,直至不等为止,返回该字符的ASCII码差值。 如果两个字符串不一样长,可对应字符又完全一样,则返回两个字符串的长度差值。

EG:

代码语言:javascript
复制
public class Test {
 
    public static void main(String args[]) {
        String str1 = "Strings";
        String str2 = "Strings";
        String str3 = "Strings123";
 
        int result = str1.compareTo( str2 );
        System.out.println(result);
      
        result = str2.compareTo( str3 );
        System.out.println(result);
     
        result = str3.compareTo( str1 );
        System.out.println(result);
    }
}

以上程序执行结果为:

代码语言:javascript
复制
0
-3
3
代码语言:javascript
复制
BigDecimal a = new BigDecimal (101);
BigDecimal b = new BigDecimal (111);
 
//使用compareTo方法比较
//注意:a、b均不能为null,否则会报空指针
if(a.compareTo(b) == -1){
    System.out.println("a小于b");
}
 
if(a.compareTo(b) == 0){
    System.out.println("a等于b");
}
 
if(a.compareTo(b) == 1){
    System.out.println("a大于b");
}
 
if(a.compareTo(b) > -1){
    System.out.println("a大于等于b");
}
 
if(a.compareTo(b) < 1){
    System.out.println("a小于等于b");
}

加减等 java.math.BigDecimal常用的方法

  1. 使用compareTo比较大小,返回结果int类型 0 表示相等 ,1 表示大于, -1 表示大于
代码语言:javascript
复制
// a大于b,即 val = 1;b小于a,即 val2 = -1
BigDecimal a = new BigDecimal(9);
BigDecimal b = new BigDecimal(1);

int val = a.compareTo(b);
System.out.println("a大于b,结果 val = "+val);

int val2 = b.compareTo(a);
System.out.println("b小于a,结果 val2 = "+val2);

打印结果:

代码语言:javascript
复制
a大于b,结果 val = 1
b小于a,结果 val2 = -1
代码语言:javascript
复制
```java
//加法
BigDecimal sum =  a.add(b);
System.out.println("a + b = " + sum);

//减法
BigDecimal c = a.subtract(b);
System.out.println("a - b = " + c);

//乘法
BigDecimal d = a.multiply(b);
System.out.println("a * b = " + d);

//除法
BigDecimal e = a.divide(b);
System.out.println("a / b = " + e);

打印结果:

代码语言:javascript
复制
a + b = 10
a - b = 8
a * b = 9
a / b = 9

我自己写的demo

代码语言:javascript
复制
 if (new BigDecimal(onceAmt).multiply(new BigDecimal(inRule)).compareTo(new BigDecimal(sum)) < 1) 

onceAmt*inRule<=sum 的意思

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-11-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档