NumberUtils的使用及数字处理需要注意的东西
来源:互联网 发布:无锡华云数据怎么样 编辑:程序博客网 时间:2024/05/16 11:37
1.org.apache.commons.lang3.math.NumberUtils的使用
public static void main(String[] args) { //isNumber System.out.println(NumberUtils.isNumber("2.34f"));//true System.out.println(NumberUtils.isNumber("2.23c"));//false //isDidit System.out.println(NumberUtils.isDigits("2.34"));//false,必须全为数字才为true System.out.println(NumberUtils.isDigits("234"));//true //to 系列转换,toFloat,toInt,toDouble,toLong Float f1=NumberUtils.toFloat("2.35f",0f); System.out.println(f1);//2.35 Float f2=NumberUtils.toFloat(null,2f); System.out.println(f2);//2.0 System.out.println(NumberUtils.toFloat(null));//0.0空指针安全, 如果不写默认值,将默认转换成0.0f //create 系列 Double d1=NumberUtils.createDouble("3.43d"); System.out.println(d1);//3.43 Integer i1=NumberUtils.createInteger("234"); System.out.println(i1);//234 //max min 系列 Float f3=NumberUtils.max(new float[]{2.34f,1.21f,4.55f,6.55f}); System.out.println(f3);//6.55 Integer i2=NumberUtils.min(new int[]{1, 3, 4, 2}); System.out.println(i2);//1 }
2 转换
1)float转double,由于各自的二进制表达方式不同,导致float转double时容易发生以下问题,正确的float转double的方式如下
注:double转float时只会出现精度丢失问题,但是不会出现float转double之类的因为表达方式出现的转换问题
//float转double出现的问题如下 float ff=1.01f; System.out.println((double)(ff));//1.0099999904632568 double dd=1.01; System.out.println((float)dd);//1.01 //正确的float转double的姿势 float f = 127.1f; BigDecimal b = new BigDecimal(String.valueOf(f)); double d = b.doubleValue(); System.out.println(d);//127.1
3 数字的二进制表达式
整数及浮点数的二进制表达式
//int转二进制格式 int i3=16; System.out.println(Integer.toBinaryString(i3));//10000 //float转二进制表示 float f4=-20.5f; System.out.println(Integer.toBinaryString(Float.floatToIntBits(f4)));//负数最高位是1,32位,正数最高位是0,不显示最高位是31位,下同 //double转二进制表示 double d3=23.32; System.out.println(Long.toBinaryString(Double.doubleToLongBits(d3)));
4 比较
两个声明时即使看起来完全一样的两个浮点数,其实在内存中的二进制表示式也是很大不同的,如下例子,所以浮点数比较应该如下进行
// float比较,即使是看起来相等的两个浮点数,在内存中的二进制解释其实也是不一样的 Float f5=1.01f; Float f6=1.01f; System.out.println(f5==f6);//false System.out.println(Float.compare(f5,f6));//0
5 数字格式处理
//四舍五入成整数 Float f8=1.4f; System.out.println(Math.round(f8)); //保留两位小数 Float f9=9.784f; BigDecimal bf9 = new BigDecimal(String.valueOf(f9)); Float f10=bf9.setScale(2,BigDecimal.ROUND_HALF_UP).floatValue();//保留2位小数,BigDecimal.ROUND_HALF_UP小数点四舍五入 System.out.println(f10);//9.78 //将0.xxxxx的float数转换成78.99%的格式输出 Float fpercent=0.78987f; NumberFormat percentFormat = NumberFormat.getPercentInstance(); percentFormat.setMaximumFractionDigits(2); //最大小数位数 System.out.println(percentFormat.format(fpercent));
6 除法检查运算
//用于检查除法运算,除数位空时。 f1=null; Float fOption=Optional.fromNullable(f1).or(f2); System.out.println(fOption);//2.0f
0 0
- NumberUtils的使用及数字处理需要注意的东西
- 需要注意的东西
- 使用namespace需要注意的一些东西
- 需要注意的东西记录
- 使用boost io_service时,需要注意的东西
- ListView中使用type需要注意的东西
- angularjs中使用ng-repeat需要注意的东西
- 请注意Integer.valueOf、Double.valueOf、commons.lang中的NumberUtils.toInt对+1的处理
- 上线中需要注意的东西
- 声明指针需要注意的一些东西
- 数据库需要注意的东西 --不断收藏
- 递归函数时需要注意的东西
- java上需要注意的东西!
- 各种算法里面需要注意的东西
- 安卓service需要注意的东西
- Android-关于WebView需要注意的东西
- 移动工作中需要注意的东西
- css中浮动需要注意的东西
- 装修合同中的一些陷阱
- 机器学习常见算法总结(一)
- 360面试被虐
- 通过UEditor多图上传到七牛云出现图片不全,或上传失败bug
- Failed to load JavaHL Library解决方案
- NumberUtils的使用及数字处理需要注意的东西
- 嵌入式复习8
- .NET(C#):使用UPnP来穿透NAT使内网接口对外网可见
- Mac本共享网络设置方式
- 单例模式之四种实现
- MVVM开发模式
- 调试activemq源码
- POJ 1258 Agri-Net(最小生成树)
- lintcode:x的平方根