首页 > 编程知识 正文

java浮点数转整数,java浮点数默认类型

时间:2023-05-04 23:48:16 阅读:20478 作者:3177

浮点数处理问题、BigDecimal精度问题、BigDecimal添加/删除/更改操作、参考阿里巴巴Java开发手册规范处理

浮点数比较问题

浮点数之间的等价判定不能通过==来比较基本数据类型,也不能通过equals来判断包裹数据类型。

问题:可以发现这两句都没有执行

publicstaticvoidmain (字符串[ ] args ) { float a=1.0F - 0.9F; 浮动b=0.9f-0.8f; if(a==b ) { System.out.println "未运行" ); }floatx=float.valueof(a; floaty=float.valueof(b; if(x.equals(y ) ) { System.out.println (“未运行”); }阿里巴巴JAVA开发手册[^1]中也有提及

解决

指定误差范围。 如果两个浮点数之差在此范围内,则视为相等

浮动a=1.0f-0.9f; 浮动b=0.9f-0.8f; 浮动差=1e-6f; if(math.ABS(a-b ) diff ) { System.out.println ('执行'); }使用http://www.Sina.com/定义值,进行浮点数的运算操作(http://www.Sina.com/)

bigdecimala=newbigdecimal('1.0 ); bigdecimalb=newbigdecimal('0.9 ); bigdecimalc=newbigdecimal('0.8 ); bigdecimalx=a.subtract(b; bigdecimaly=b.subtract(c; if(x.comPareto(y )==0) {System.out.println ('执行'); }比较时使用比较到。 equals ()方法为BigDecimal) 1.0和1.00的结果为false ),而compareTo )为推荐使用,使用以下代码进行测试

bigdecimalx=newbigdecimal('0.1 ); bigdecimal y=new bigdecimal (' 0.10 ); if(x.equals(y ) ) {System.out.println ('未运行!' ); }if(x.comPareto(y )==0) {System.out.println ('执行!' ); } BigDecimal初始化

初始化时应该以字符串的形式进行初始化定义,比较他们的差异

bigdecimala=newbigdecimal(0.1f; bigdecimalb=newbigdecimal('0.1 ); 系统. out.println (a; 系统. out.println (b ); 两种方式定义的值不同,bigdecimal(double )存在精度损失风险,在阿里巴巴Java开发手册(^1)中也有提及

BigDecimal添加/删除更改操作

publicstaticvoidmain (字符串[ ] args ) bigdecimal a=new bigdecimal (' 0.123 ' ); bigdecimal b=new bigdecimal (' 0.987 ); bigdecimal c=new bigdecimal (-0.555 ); //bigdecimaladd=a.add(b;//减少bigdecimal subtract=a.subtract (b; //bigdecimal multiply=a.multiply (b ); //除法,保留的小数位数和四舍五入bigdecimaldivide=a.divide(b,20,BigDecimal.ROUND_HALF_UP ); //绝对值BigDecimal abs=c.abs (; system.out.println (添加; system.out.println(subtract; system.out.println (多点); system.out.println(divide; system.out.println(ABS; }除法的第二个参数设定保留的小数点位数,第三个参数设定如何进行四舍五入操作。 阅读源代码可以发现,在我们平时使用的0.5以上时可以进入一位。

执行结果

BigDecimal还有其他几个操作。 请尝试操作

阿里JAVA开发手册地址

手册Alibaba云盘链接: https://www.aliyundrive.com/s/metw 4t 5d dgh

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。