Java-数字处理类
Posted 旷世奇才李先生
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java-数字处理类相关的知识,希望对你有一定的参考价值。
勤能补拙
文章持续更新,可以微信搜索【小奇JAVA面试】第一时间阅读,回复【资料】获取福利,回复【项目】获取项目源码,回复【简历模板】获取简历模板,回复【学习路线图】获取学习路线图。
文章目录
前言
在解决实际问题时,对数字的处理时非常普遍的,如数学问题、随机问题、商业货币问题、科学计数问题等。为了应对以上问题,Java提供了处理相关问题的类,包括DecimalFormat类(用于格式化数字)、Math类(为各种数学计算提供了工具方法)、Random类(为Java处理随机数问题提供了各种方法)、BigInteger类与BigDecimal类(为所有大数字的处理提供了相应的数学运算操作方法)。
一、数字格式化
数字的格式化在解决实际问题时使用非常普遍,如表示某超市的商品价格,需要保留两位有效数字。Java主要对浮点型数据进行数字格式化操作,其中浮点型数据包括double型和float型数据,在Java中使用java.text.DecimalFormat格式化数字。
例如:
public class Test
//使用实例化对象时设置格式化模式
static public void SimgleFormat(String pattern,double value)
//实例化DecimalFormat对象
DecimalFormat myFormat = new DecimalFormat(pattern);
String output = myFormat.format(value);//将数字进行格式化
System.out.println(value + " " + pattern + " " + output);
//使用applyPattern()方法对数字进行格式化
static public void UseApplyPatternMethodFormat(String pattern,double value)
DecimalFormat myFormat = new DecimalFormat();//实例化DecimalFormat对象
myFormat.applyPattern(pattern);//调用applyPattern()方法设置格式化模板
System.out.println(value + "" + pattern + "" +myFormat.format(value));
public static void main(String[] args)
SimgleFormat("###,###.###",123456.789);//调用静态SimgleFormat()方法
SimgleFormat("00000000.###kg",123456.789);//在数字后加上单位
//按照格式模板格式化数字,不存在的位以0显示
SimgleFormat("000000.000",123.78);
//调用静态UseApplyPatternMethodFormat()方法
UseApplyPatternMethodFormat("#.###%",0.789);
//将小数点后格式化为两位
UseApplyPatternMethodFormat("###.##",123456.789);
//将数字转化为千分数形式
UseApplyPatternMethodFormat("0.00\\u2030",0.789);
二、数学运算
在Java语言中提供了一个执行数学基本运算的Math类,该类包括常用的数学运算方法,如三角函数方法、指数函数方法、对数函数方法、平方根函数方法等一些常用数学函数,除此之外还提供了一些常用的数学常量,如PI、E等。
1、Math类
在Math类中提供了众多数学函数方法,主要包括三角函数方法、指数函数方法、取整函数方法、取最大值、最小值以及平均值函数方法,这些方法被定义为static形式,所以在程序中应用比较简单。
Math.数学方法
在Math类中除了函数方法之外还存在一些常用数学常量,如PI、E等。这些数学常量作为Math类的成员变量出现,调用起来也很简单。例如
Math.PI
Math.E
2、常用数学运算方法
在Math类中的常用数学运算方法较多,大致可以将其分为4大类别,分别为三角函数方法、指数函数方法、取整函数方法以及取最大值、最小值和绝对值函数方法。
1、三角函数方法
public class Test
public static void main(String[] args)
//取90°的正弦
System.out.println("90度的正弦值:"+Math.sin(Math.PI/2));
System.out.println("0度的余弦值:"+Math.cos(0));
//取60°的正切
System.out.println("60度的正切值:" + Math.tan(Math.PI/3));
//取2的平方根与2商的反正弦
System.out.println("2的平方根与2商的反弦值:" + Math.asin(Math.sqrt(2)/2));
//取2的平方根与2商的反余弦
System.out.println("2的平方根与2商的反余弦值:" + Math.acos(Math.sqrt(2)/2));
System.out.println("1的反正切值:"+Math.atan(1));
//取120°的弧度值
System.out.println("120度的弧度值:"+Math.toRadians(120.0));
//取π/2的角度
System.out.println("π/2的角度值:" + Math.toDegrees(Math.PI/2));
2、指数函数方法
例如:
public class Test
public static void main(String[] args)
System.out.println("e的平方值:"+Math.exp(2));//取e的2次方
//取以e为底2的对数
System.out.println("以e为底2的对数值:"+Math.log(2));
//取以10为底2的对数
System.out.println("以10为底2的对数值:"+Math.log10(2));
System.out.println("4的平方根值:"+Math.cbrt(4));//取4的平方根
System.out.println("8的立方根值:"+Math.cbrt(8));//取8的立方根
System.out.println("2的2次方值:"+Math.pow(2,2));//取2的2次方
3、取整函数方法
例如:
public class Test
public static void main(String[] args)
//返回第一个大于等于参数的整数
System.out.println("使用ceil()方法取整:"+Math.ceil(5.2));
//返回第一个小于等于参数的整数
System.out.println("使用floor()方法取整:"+Math.floor(2.5));
//返回与参数最接近的整数
System.out.println("使用rint()方法取整:"+Math.rint(2.7));
//返回与参数最接近的整数
System.out.println("使用rint()方法取整:"+Math.rint(2.5));
//将参数加上0.5后返回最接近的整数
System.out.println("使用round()方法取整:"+Math.round(3.4f));
//将参数加上0.5后返回最接近的整数,并将结果强制转换为长整型
System.out.println("使用round()方法取整:"+Math.round(2.5));
4、取最大值、最小值、绝对值函数方法
例如:
public class Test
public static void main(String[] args)
System.out.println("4和8较大者:"+Math.max(4,8));
//取两个参数的最小值
System.out.println("4.4和4较小者:"+Math.min(4.4,4));
System.out.println("-7的绝对值:"+Math.abs(-7));
三、随机数
在实际开发中产生随机数的使用是很普遍的,所以在程序中进行产生随机数操作很重要。在Java中主要提供了两种方式产生随机数,分别为调用Math类的random()方法和Random类提供的产生各种数据类型随机数的方法。
1、Math.random()方法
在Math类中存在一个random()方法,用于产生随机数字,这个方法默认生成大于等于0.0且小于1.0的double型随机数,即0<=Math.random()<1.0,虽然Math.random()方法只可以产生0~1之间的double型数字,其实只要在Math.random()语句上稍加处理,就可以使用这个方法产生任意范围的随机数。
2、Random类
除了Math类中的random()方法可以获取随机数之外,java中还提供了一种可以获取随机数的方式,那就是java.util.Random类,可以通过实例化一个Random对象创建一个随机数生成器。
语法如下:
Random r = new Random();
四、大数字运算
在Java中提供了大数字的操作类,即java.math.BigInteger类与java.math.BigDecimal类。这两个用于高精度计算,其中BigInteger类是针对大整数的处理类,而BigDecimal类则是针对大小数的处理类。
1、BigInteger
BigInteger类型的数字范围较Integer类型的数字范围要大得多。前文介绍过Integer是init的包装类,int的最大值为2^31-1,如果要计算更大的数字,使用Integer数据类型就无法实现了,所以Java中提供了BigInteger类来处理更大的数字。BigInteger支持任意精度的整数,也就是说再运算中BigInteger类型可以准确地表示任何大小的整数值而不会丢失任何信息。
2、BigDecimal
BigDecimal和BigInteger都能实现大数字的运算,不同的是BigDecimal加入了小数的概念。一般的float型和double型数据只可以用来做科学计算或工程计算,但由于在商业计算中要求数字精度比较高,所以要用到java.math.BigDecimal类。BigDeciaml类支持任何精度的定点数,可以用它来精确计算货币值。
五、总结
这里的相关内容还没有整理完毕,文章后面持续更新,建议收藏。
文章中涉及到的命令大家一定要像我一样每个都敲几遍,只有在敲的过程中才能发现自己对命令是否真正的掌握了。
可以微信搜索【小奇JAVA面试】第一时间阅读,回复【资料】获取福利,回复【项目】获取项目源码,回复【简历模板】获取简历模板,回复【学习路线图】获取学习路线图。
以上是关于Java-数字处理类的主要内容,如果未能解决你的问题,请参考以下文章