我是靠谱客的博主 秀丽高跟鞋,最近开发中收集的这篇文章主要介绍double和float的区别以及常用数字处理,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

区别

1.double是双精度浮点数,内存占8个字节,有效数字16位,范围从10-308到10308 和 -10-308到-10-308,有效小数位15位
float是单精度浮点数,内存占4个字节,有效数字8位,范围从10-38到1038 和 -1038到-10-38,有效小数位6-7位
2.两者处理速度不同,CPU处理float的速度比处理double快。double的精度高,double消耗内存是float的两倍。
3.小数默认是double类型,用float时需要进行强转,或者在小数后加上f。

double d = 2.6;
System.out.println(d);
float f = (float)2.8;
System.out.println(f);
float f1 = 2.8f;
System.out.println(f1);

保留指定小数位数

Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。

//注意不要直接使用double d = 3.835,不然得不到我们想要的值
String d = "3.835";
BigDecimal bd = new BigDecimal(d);
double test1 = bd.setScale(2, BigDecimal.ROUND_DOWN).doubleValue();
System.out.println("---直接截断ROUND_DOWN---"+test1);
double test2 = bd.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
System.out.println("---四舍五入ROUND_HALF_UP---"+test2);
double test3 = bd.setScale(2, BigDecimal.ROUND_HALF_DOWN).doubleValue();
System.out.println("---四舍五入(保留位后一位是5舍弃)ROUND_HALF_DOWN---"+test3);
double test4 = bd.setScale(2, BigDecimal.ROUND_UP).doubleValue();
System.out.println("---直接进位ROUND_UP---"+test4);

DecimalFormat 是 NumberFormat 的一个具体子类,用于格式化十进制数字。

double dd = 3.8353233;
        DecimalFormat df = new DecimalFormat("#0.00"); // 保留两位小数,四舍五入
        System.out.println("保留两位小数,四舍五入:" + df.format(dd));
        
DecimalFormat df= new DecimalFormat("#.######");// 精确到小数点后6位

加减乘除

//注意参数,string参数和double参数计算的结果精度是不同的,String类型结果会和参数位数保持一致
System.out.println("加"+(new BigDecimal("3.833").add(new BigDecimal("4.833"))).toString());//加8.666
System.out.println("加"+(new BigDecimal(3.833).add(new BigDecimal(4.833))).toString());//加8.6660000000000003694822225952520966529846191406250
System.out.println("减"+(new BigDecimal("3.833").subtract(new BigDecimal("4.83"))).toString());//减-0.997
System.out.println("乘"+(new BigDecimal("3.833").multiply(new BigDecimal("4.83"))).toString());//乘18.51339
//如果抛出ArithmeticException异常,可以指定舍入模式来解决,常用ROUND_HALF_UP四舍五入
System.out.println("除"+(new BigDecimal("1000").divide(new BigDecimal("3"),2,BigDecimal.ROUND_HALF_UP)).toString());//除333.33

取最大最小值

System.out.println("获取两者的最大者:"+Math.max(12.556,48.8));
System.out.println("获取两者的最小者:"+Math.min(12.556,48.8));


<dependency>
	<groupId>cn.hutool</groupId>
	<artifactId>hutool-all</artifactId>
	<version>5.3.10</version>
</dependency>
//参数可以为数组,指定比较器,int,long,double等
ArrayUtil.min(12.556,48.8);
ArrayUtil.max(12.556,48.8,788.88);

最后

以上就是秀丽高跟鞋为你收集整理的double和float的区别以及常用数字处理的全部内容,希望文章能够帮你解决double和float的区别以及常用数字处理所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部