Java中数字相关的类有哪些?Nuber数字类和Math数学类详解

这篇具有很好参考价值的文章主要介绍了Java中数字相关的类有哪些?Nuber数字类和Math数学类详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

我们在解决实际问题时,会经常对数字、日期和系统设置进行处理,比如在我们的代码中,经常会遇到一些数字&数学问题、随机数问题、日期问题和系统设置问题等。

为了解决这些问题,Java给我们提供了多个处理相关问题的类,比如Number类、Math类、Random类、BigInteger类、BigDecimal类、Date类、System类等。 接下来我们会利用几篇文章,给大家详细地介绍这些与数学、日期、系统处理等相关的类,本篇文章我们先从Number数字类和Math数学类学起。


全文大约 【3000】字, 不说废话,只讲可以让你学到技术、明白原理的纯干货!本文带有丰富的案例及配图,让你更好地理解和运用文中的技术概念,并可以给你带来具有足够启迪的思考......

一. Number类

1. 内容回顾

在学习Java里的Math数学类之前,我们再来回顾一下之前学习过的Number数字类。

我们知道,Java里的数据类型可以分为引用类型和基本类型,其中基本类型有3大类8个子类,如下图所示:
Java中数字相关的类有哪些?Nuber数字类和Math数学类详解

实际上,无论是整数型还是浮点型,它们都是数值型,当我们定义数值型变量时,都是直接操作的数字。

而在实际开发中,我们还经常遇到需要使用对象,而不是使用内置数据类型的情况。所以为了解决这个问题,Java又为每一个内置的基本数据类型提供了对应的包装类。其中,6个数值型对应的包装类(Byte、Short、Integer、Long、Float、Double),都是抽象类Number的子类。 在基本类型和包装类型之间,会涉及到装箱和拆箱的操作,大家可以回顾一下这是怎么回事,如果你想不起来,请回过头来看看之前的文章哦。

2. 数字格式化

我们在使用数字时,很多时候并不只是简单地原文展示,还要对这些数字进行各种格式化操作,比如设置小数点后几位、数字后带%号或货币符号等。这种使用场景,在解决实际问题时是很普遍的。但我们不用在数字后手动添加,Java自带了一个DedmalFormat类,可以对数字进行格式化处理。

DecimalFormat是NumberFormat的子类,用于格式化十进制数字,该类包含一个模式和一组符号,这些常用的符号含义如下:

符号 说明
0 显示数字,如果位数不够则补0
# 显示数字,如果位数不够不发生变化
. 小数分隔符
- 减号
, 组分隔符
E 分隔科学记数法中的尾数和小数
% 前缀或后缀,乘以 100 后作为百分比显示
? 乘以 1000 后作为千进制货币符显示。用货币符号代替。如果双写,用国际货币符号代替。如果出现在一个模式中,用货币十进制分隔符代替十进制分隔符

接下来我们通过一个案例来演示DecimalFormat的用法:

public class Demo08 {
	public static void main(String[] args) {
		// 实例化DecimalFormat类对象,并设置格式
		//小数点后保留1位
		DecimalFormat df1 = new DecimalFormat("0.0");
		//整数格式
		DecimalFormat df2 = new DecimalFormat("#.#");
		//小数点后保留3位小数
		DecimalFormat df3 = new DecimalFormat("000.000");
		//以100%百分比格式显示
		DecimalFormat df4 = new DecimalFormat("#%");
		
		float f = 1000f;
		// 对输入的数字应用格式,并输出结果
		System.out.println("0.0格式:" + df1.format(f));
		System.out.println("#.#格式:" + df2.format(f));
		System.out.println("000.000格式:" + df3.format(f));
		System.out.println("百分比格式:" + df4.format(f));
	}
}

二. Math数学类

1. 简介

在开发的时候,我们经常需要对数字进行各种数学计算,虽然Java给我们提供了+、-、*、/ 和 % 等基本算术运算符,但这些符号并不能进行更复杂的数学运算,例如三角函数、对数运算、指数运算等。所以为了方便实现这些数学计算功能,Java自身就给我们提供了一个Math数学类,用于进行各种常见的数学操作。

Math中提供了用于执行基本数学运算的多个属性和方法,如初等指数、对数、平方根和三角函数等。Math 类位于 java.lang包中,它的构造方法是 private私有的,因此我们无法创建 Math类对象。为了方便调用这些方法和属性,Math类中的很多方法和属性都被定义为static形式,这样我们就可以直接调用了。

接下来我们就给大家分别介绍一下Math类中的常用属性和方法,这些方法比较多,大家不用专门的记忆,以后用到时根据名字就能猜出来它们的功能。但是对于一些容易引起混淆的方法,壹哥还是希望大家要稍微记一下。

2. 静态常量

Math类给我们提供了两个比较常用的静态常量,分别是 E 和 PI,它们的值分别等于 e(自然对数) 和 π(圆周率)。这两个属性我们可以直接调用,如下所示:

public static void main(String[] args) {
	//静态常量E和PI
	System.out.println("E常量的值:" + Math.E);
	System.out.println("PI常量的值:" + Math.PI);
}

3. 计算最大值、最小值和绝对值

我们还经常对数字计算最大值、最小值和绝对值,Math类中提供了对应的多个重载方法,这些方法如下表所示:

方法 说明
static int abs(int a) 返回 a 的绝对值
static int max(int x,int y) 返回 x 和 y 中的最大值
static int min(int x,int y) 返回 x 和 y 中的最小值

以上这4个方法,分别都有4个重载方法,主要是方法的参数类型不同,而且返回值也不同,它们都可以接收int、long、float、double 4种类型的参数。这几个方法的用法如下:

public static void main(String[] args) {
	//计算最大值、最小值、绝对值
	System.out.println("5和35中的最大值:" + Math.max(35, 5));
    System.out.println("0.1和-100中的较小值:" + Math.min(0.1, -100));
    System.out.println("-900的绝对值:" + Math.abs(-900));
}

4. 求整运算

Math类给我们提供了好几个用于求整的方法,用于得到整数部分,如下表所示:

方法 说明
static double ceil(double a) 返回大于或等于 a 的最小整数
static double floor(double a) 返回小于或等于 a 的最大整数
static double rint(double a) 返回最接近 a 的整数值,如果有两个同样接近的整数,则结果取偶数
static int round(float a) 将参数加上 1/2 后返回与参数最近的整数
static long round(double a) 将参数加上 1/2 后返回与参数最近的整数,然后强制转换为长整型

以上方法的用法如下所示:

import java.util.Scanner;

public class Demo03 {

	public static void main(String[] args) {
		//求整运算
		Scanner input = new Scanner(System.in);
        System.out.println("请输入一个数字...");
        //num=10.5
        double num = input.nextDouble();
		
		//向上取整
        System.out.println("向上取整:"+Math.ceil(num));//11.0
        
        //向下取整
        System.out.println("向下取整:"+Math.floor(num));//10.0
        
        //四舍五入
        System.out.println("四舍五入:"+Math.round(num));//11
        
        //返回最接近num的整数值,如果有两个同样接近的整数,则结果取偶数.
        System.out.println("最接近 "+num+" 的整数:" + Math.rint(num));//10.0
	}

}

5. 三角函数运算

Math中还给我们提供了用于计算三角函数的方法,如下表所示:

方法 说明
static double sin(double a) 返回角的三角正弦值,参数以孤度为单位
static double cos(double a) 返回角的三角余弦值,参数以孤度为单位
static double asin(double a) 返回一个值的反正弦值,参数域在 [-1,1],值域在 [-PI/2,PI/2]
static double acos(double a) 返回一个值的反余弦值,参数域在 [-1,1],值域在 [0.0,PI]
static double tan(double a) 返回角的三角正切值,参数以弧度为单位
static double atan(double a) 返回一个值的反正切值,值域在 [-PI/2,PI/2]
static double toDegrees(double angrad) 将用孤度表示的角转换为近似相等的用角度表示的角
staticdouble toRadians(double angdeg) 将用角度表示的角转换为近似相等的用弧度表示的角

以上方法的用法如下所示:

/**
 * @author 一一哥Sun
 */
public class Demo04 {

	public static void main(String[] args) {
		//三角函数运算
		//Math.sin()方法参数的单位是弧度,90度表示的是角度,需要把90度转换为弧度,即Math.PI/180*90,故转换后的弧度为Math.PI/2
		System.out.println("90度的正弦值:" + Math.sin(Math.PI/2));
        System.out.println("0度的余弦值:" + Math.cos(0));
        System.out.println("30的正切值:" + Math.tan(30));
        System.out.println("30的反正切值:" + Math.atan(30));
        System.out.println("1.8弧度的角度值:" + Math.toDegrees(1.8));
        System.out.println("100度的弧度值:" + Math.toRadians(100.0));
	}

}

6. 指数运算

指数运算包括求方根、取对数、求n次方等运算,Math类中定义的指数运算方法如下表所示:

方法 说明
static double exp(double a) 返回 e 的 a 次幂
static double pow(double a,double b) 返回以 a 为底数,以 b 为指数的幂值
static double sqrt(double a) 返回 a 的平方根
static double cbrt(double a) 返回 a 的立方根
static double log(double a) 返回 a 的自然对数,即 lna 的值
static double log10(double a) 返回以 10 为底 a 的对数

以上方法的用法如下所示:

public static void main(String[] args) {
	//指数运算
	System.out.println("5的立方值:" + Math.pow(5, 3));
    //求a的立方根,参数是要开立方的数
    System.out.println("27的立方根:"+Math.cbrt(27));
	System.out.println("16的平方根:" + Math.sqrt(16));
    System.out.println("10为底,2的对数:" + Math.log10(2));
}

7. 生成随机数

在Math类中还给我们提供了一个用于生成[0-1)范围内随机数的random()方法。该方法没有参数,它默认会返回一个 >=0.0、<1.0 的 double类型随机数,即随机数的取值范围是[0-1)。我们只需对 random()方法的返回值稍加处理,即可产生任意范围内的随机数。该方法使用比较简单,案例如下:

//随机数 默认的范围[0,1)
System.out.println(Math.random());

//随机生成一个两位数,[0,1)*90,0,90) + 10     
System.out.println((int)(Math.random()*90)+10);

三. 结语

至此我们就把与数字、数学、随机数等相关的类给大家介绍完了,本节内容没有特别难的地方,主要是需要大家记住几个常用方法即可。文章来源地址https://www.toymoban.com/news/detail-434052.html

到了这里,关于Java中数字相关的类有哪些?Nuber数字类和Math数学类详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ES5 的构造函数和 ES6 的类有什么区别

    在JavaScript中,类和构造函数都被用来创建对象,接下来会从以下几点说说两者的区别: 构造函数使用函数来定义 类使用class来定义 ES6 的 class 可以看作是一个语法糖,这种写法只是让对象原型的写法更加清晰、更像面向对象编程的语法。 比如这是一个构造函数生成实

    2024年02月11日
    浏览(42)
  • 【Java|多线程与高并发】JUC中常用的类和接口

    JUC是Java并发编程中的一个重要模块,全称为 Java Util Concurrent (Java并发工具包),它提供了一组用于多线程编程的工具类和框架,帮助开发者更方便地编写线程安全的并发代码。 本文主要介绍 Java Util Concurrent 下的一些常用接口和类 Callable接口类似于Runnable. 有一点区别就是

    2024年02月12日
    浏览(33)
  • 在Django的数据库模型的类中,通常还会定义一个名叫Meta的内部类,这个类有什么作用?

    在Django的数据库模型中, Meta 类是一个内部类,用于定义一些与模型相关的元数据(metadata)。它提供了一种在模型类中指定各种选项和配置的方式。 以下是 Meta 类的一些常见用途和作用: 定义模型的数据库表名: 通过 db_table 选项可以指定模型对应的数据库表的名称。例如

    2024年02月12日
    浏览(53)
  • Java基础(十四)数学相关的类

    1.1 java.lang.Math java.lang.Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。类似这样的工具类,其所有方法均为静态方法,并且不会创建对象,调用起来非常简单。 public static double abs(double a) :返回 double 值的绝对值。 public static double ceil(double

    2024年02月01日
    浏览(35)
  • 每日一道面试题之介绍一下常见的异常类有哪些?

    常见的异常类包括: NullPointerException(空指针异常): 例如: SQLException:(数据库相关的异常): 例如: IndexOutOfBoundsException(下标越界异常): 例如: IllegalArgumentException(非法参数异常): 例如: IllegalStateException(非法状态异常): 例如: ClassCastException(类型转换异常

    2024年02月08日
    浏览(47)
  • Scala的类和对象

    Scala 的类与 Java 的类具有非常多的相似性,示例如下:

    2024年02月05日
    浏览(44)
  • Android 调用系统隐藏的类和方法

    1.Android系统隐藏的类和方法 阅读Android源码时,会发现很多被@UnsupportedAppUsage注解的方法,这些方法不能被外部应用访问。 比如Android中的PackageParser类,这个类是在android.content.pm包下面: 可以看到这个类是隐藏的(@hide),不对外提供sdk的调用,所以不能直接去实例化。 这个

    2024年02月08日
    浏览(38)
  • 那些你不知道的类和对象的知识

    🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨ 🐻推荐专栏1: 🍔🍟🌯C语言初阶 🐻推荐专栏2: 🍔🍟🌯C语言进阶 🔑个人信条: 🌵知行合一 🍉本篇简介::深入理解构造函数,介绍友元函数,内部类等等 金句分享: ✨努力不一定是为了钱,还有骨子里的自信与淡定✨ 前面,我们已经学习过

    2024年02月13日
    浏览(30)
  • C++ | 一些你所忽略的类和对象小知识

    在深度探索类的六大天选之子中,我们学习了类和对象的构造函数,知道了其可以用来初始化成员变量,也学了一些它的相关语法特性,但是C++中的构造函数真的就只是这样吗?本模块我们继续来谈谈有关构造函数的一些知识点 引入 我们知道,对于下面这个类A的成员变量

    2024年02月04日
    浏览(40)
  • 【JavaSE API 】生成随机数的2种方法:Random类和Math类的Random方法

    Random类和Math类的random方法都可以用来生成随机数 而Math类的random方法则是 基于系统时间 的伪随机数生成器,= 0.0 , 1.0的随机double值范围[0,1)。例如: double num1 = Math.random() * 5 + 4;//范围[4,9) Random类是 基于种子 的伪随机数生成器,有含参数和不含参数两种构造方式,不含参数的

    2024年02月07日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包