写bug的小杨

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

BigDecimal、double

BigDecimal篇:

 

1.String转BigDecimal

1
2
3
String s1="123.45";
 
BigDecimal bg=new BigDecimal(s1);

2. 解决double相加的精度问题,要用BigDecimal

1
2
3
4
5
6
public static double add(double v1, double v2)
    {
        BigDecimal b1 = new BigDecimal(Double.toString(v1));
        BigDecimal b2 = new BigDecimal(Double.toString(v2));
        return b1.add(b2).doubleValue();
    }

  

1
Double a=BigDecimalUtils.format(b).doubleValue();

   

3.加减乘除
1
2
3
4
bignum3 =  bignum1.add(bignum2);     
bignum3 = bignum1.subtract(bignum2);
bignum3 = bignum1.multiply(bignum2);
bignum3 = bignum1.divide(bignum2);

  

4.比大小

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//前提为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");
}

 

5.等于0

1
if(num.equals(BigDecimal.ZERO)){ }

 

 

6.转换成类型

toString()                将BigDecimal对象的数值转换成字符串。 
doubleValue()          将BigDecimal对象中的值以双精度数返回。 
floatValue()             将BigDecimal对象中的值以单精度数返回。 
longValue()             将BigDecimal对象中的值以长整数返回。 
intValue()               将BigDecimal对象中的值以整数返回。

 

6.保留两位小数处理

1
2
3
4
5
6
7
//第一种方法:保留两位小数
double db = bigDecimalTwo.setScale(2, RoundingMode.HALF_UP).doubleValue();
System.out.println(db);
  
// 第二种方法:保留两位小数
DecimalFormat df = new DecimalFormat("#.00");
df.format(bigDecimalTwo);

  

 

----------------------------------------分割线---------------------------------------------------------------------------

double篇:

 double的比大小,判是否等于0都会有精度问题

要用BigDecimal来处理


posted on   迷途的小狗  阅读(228)  评论(0编辑  收藏  举报

编辑推荐:
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
阅读排行:
· 《HelloGitHub》第 108 期
· Windows桌面应用自动更新解决方案SharpUpdater5发布
· 我的家庭实验室服务器集群硬件清单
· C# 13 中的新增功能实操
· Supergateway:MCP服务器的远程调试与集成工具
点击右上角即可分享
微信分享提示