Java-数字处理类

举报
小奇JAVA 发表于 2022/07/27 23:27:09 2022/07/27
【摘要】 勤能补拙 文章持续更新,可以微信搜索【小奇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);
    }
}


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

在这里插入图片描述

二、数学运算

在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));
    }
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

在这里插入图片描述

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次方
    }
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

在这里插入图片描述

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));
    }
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

在这里插入图片描述

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));
    }
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

在这里插入图片描述

三、随机数

在实际开发中产生随机数的使用是很普遍的,所以在程序中进行产生随机数操作很重要。在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面试】第一时间阅读,回复【资料】获取福利,回复【项目】获取项目源码,回复【简历模板】获取简历模板,回复【学习路线图】获取学习路线图。

文章来源: xiaoqijava.blog.csdn.net,作者:旷世奇才李先生,版权归原作者所有,如需转载,请联系作者。

原文链接:xiaoqijava.blog.csdn.net/article/details/125965586

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。