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来处理
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 《HelloGitHub》第 108 期
· Windows桌面应用自动更新解决方案SharpUpdater5发布
· 我的家庭实验室服务器集群硬件清单
· C# 13 中的新增功能实操
· Supergateway:MCP服务器的远程调试与集成工具