15.8 Math数学计算
程序开发的本质就是数据处理,Java提供有java.lang.Math类来帮助开发者进行常规的数学计算处理,例如,四舍五入、三角函数、乘方处理等。
范例:使用Math类进行数学计算
package cn.kuiba.util;public class Main {public static void main(String[] args) throws Exception {System.out.println(Math.abs(-10.1)); //绝对值System.out.println(Math.max(10.2,20.3)); //获取最大值System.out.println(Math.log(5)); //对数System.out.println(Math.round(15.1)); //四舍五入System.out.println(Math.round(-15.5));System.out.println(Math.round(-15.51));System.out.println(Math.pow(10.2,20.2)); //乘方}
}程序执行结果:
10.1
20.3
1.6094379124341003
15
-15
-16
2.364413713591828E20
范例:自定义四舍五入工具类
package cn.kuiba.util;
class MathUtil{private MathUtil(){}; //构造方法私有化/*** 进行准确位数的四舍五入处理操作* @param num 要进行四舍五入计算的数字* @param scale 保留的小数位* @return 四舍五入处理后的结果*/public static double round(double num,int scale){return Math.round(num*Math.pow(10.0,scale))/Math.pow(10.0,scale);}
}
public class Main {public static void main(String[] args) throws Exception {System.out.println(MathUtil.round(7.45124789023480234890,3));}
}程序执行结果:
7.451
9. Random随机数
java.util.Random类的主要功能是可以进行随机数的生成,开发者只需要为其设置一个随机数的范围边界就可以随机生成不大于此边界的正整数,生成方法如下。
随机生成正整数:public int nextInt(int bound)
范例:随机生成正整数
package cn.kuiba.util;import java.util.Random;
public class Main {public static void main(String[] args) throws Exception {Random random=new Random();for (int x=0;x<10;x++){System.out.println(random.nextInt(100)+"、");}}
}程序执行结果:
46、43、78、97、86、97、64、17、47、12、
随机生成了10个不大于100的正整数,并且也会有可能生成重复数字。
范例:实现36选7
从1~36个数字中,随机抽取7个数字内容,并且这7个数字内容不能为0,也不能重复。
package cn.kuiba.util;
import java.util.Random;
public class Main {public static void main(String[] args) throws Exception {int data[]=new int[7]; //开辟7个大小的空间Random random=new Random();int foot=0; //操作data脚标while (foot<7){ //选择7个数字int num=random.nextInt(37); //生成1个数字if (isUse(num,data)){ //该数字现在可以使用data[foot++]=num; //保存数据}}java.util.Arrays.sort(data); //数组排序printArray(data); //输出数组内容}/*** 将接收到的整形数组内容进行输出* @param temp 数组临时变量*/public static void printArray(int temp[]){for (int x=0;x<temp.length;x++){ //for循环输出System.out.print(temp[x]+"、"); //下标获取元素内容}}/*** 判断传入的数字是否为0以及是否在数组中存在 * @param num 要判断的数字* @param temp 已经存在的数据* @return 如果该数字不是0并且可以使用返回true,否则返回false*/public static boolean isUse(int num,int temp[]){if (num==0){ //生成数字为0表示错误return false;}for (int x=0;x<temp.length;x++){if (num==temp[x]){ //生成数字已存在表示错误return false;}}return true;}
}程序执行结果:
1、2、7、9、22、25、36、
本程序为了防止保存错误的随机数,所以定义了一个isUse()方法进行0和重复内容的判断。由于Random类生成的随机数没有顺序,所以利用了Array.sort()实现了数组排序。
10. 大数字处理类
当一个数学非常大的时候,是无法使用基本数据类型接收的。在java.math包中提供了大数字的操作类:BigInteger(整数)、BigDecimal(浮点数),这两类都是Number子类。继承结构如图,常用方法如表。
范例:使用BigInteger实现四则运算
package cn.kuiba.util;
import java.math.BigInteger;
public class Main {public static void main(String[] args) throws Exception {BigInteger bigA=new BigInteger("6789321987");BigInteger bigB=new BigInteger("13972");System.out.println("加法操作:"+bigA.add(bigB));System.out.println("减法操作:"+bigA.subtract(bigB));System.out.println("乘法操作:"+bigA.multiply(bigB));System.out.println("除法操作:"+bigA.divide(bigB));BigInteger result[]=bigA.divideAndRemainder(bigB);System.out.println("商:"+result[0]+"、余数:"+result[1]);}
}程序执行结果:
加法操作:6789335959
减法操作:6789308015
乘法操作:94860406802364
除法操作:485923
商:485923、余数:5831
范例:使用BigDecimal实现四舍五入
package cn.kuiba.util;
import java.math.BigDecimal;
import java.math.RoundingMode;
class MathUtil{private MathUtil(){}/*** 实现数据的四舍五入操作* @param num 要进行四舍五入操作的数字* @param scale 四舍五入保留的小数位数* @return 四舍五入处理后的结果*/public static double round(double num,int scale){//数字除以1.0还是数字本身,divide()方法保留指定位数的小数,并设置进位模式为向上进位(HALF_UP)return new BigDecimal(num).divide(new BigDecimal(1.0),scale,RoundingMode.HALF_UP).doubleValue();}
}
public class Main {public static void main(String[] args) throws Exception {System.out.println(MathUtil.round(19.6352,2));}
}程序执行结果:
19.64
本程序主要利用了BigDecimal类的divide()除法操作实现了准确的小数位保留,同时利用向上进位模式实现了四舍五入操作。
11. Date日期处理类
Java中如果想要获得当前的日期时间可以通过java.util.Date类来实现,常用方法如下:
范例:获取当前日期时间
package cn.kuiba.util;
import java.util.Date;
public class Main {public static void main(String[] args) throws Exception {Date date=new Date();System.out.println(date);}
}程序执行结果:
Wed May 11 17:44:19 CST 2022
范例:Date与long之间转换处理
package cn.kuiba.util;
import java.util.Date;
public class Main {public static void main(String[] args) throws Exception { //简化异常处理Date date=new Date(); //实例化Date类对象long current=date.getTime(); //获得当前时间戳数字current+=864000*1000; //10天的秒数System.out.println(new Date(current)); //long转换为Date}
}程序执行结果:
Sat May 21 17:46:24 CST 2022
Date类对象保存时间戳是以毫秒的形式记录的,本程序获取了10天之后的日期。
提示:JDK1.8开始提供有java.time.LocalDateTime类,提供有java.time支持包,可直接进行日期时间操作。
package cn.kuiba.util;
import java.time.LocalDateTime;
public class Main {public static void main(String[] args) throws Exception {LocalDateTime localDateTime=LocalDateTime.now();System.out.println(localDateTime);}
}程序执行结果:
2022-05-11T17:51:17.005
可以方便的获取日期时间数据,而后也可以方便的进行日期时间的累加。
12. SimpleDateFormat日期格式化
使用java.util.Date类可以获取当前日期,但是结果不方便阅读,那么考虑对结果进行格式化处理,通过java.text.SimpleDateFormat类完成。继承关系如图。
常用方法如表。
在日期格式化操作中必须设置有完整的日期转化模板,模板中通过特定的日期标记可以将一个日期格式中的日期数字提取出来。模板如表。
范例:将日期格式化为字符串
package cn.kuiba.util;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {public static void main(String[] args) throws Exception {Date date=new Date();SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");String str=sdf.format(date);System.out.println(str);}
}程序执行结果:
2022-05-11 18:14:08.798
范例:将字符串转为Date对象
package cn.kuiba.util;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {public static void main(String[] args) throws Exception {String birthday="2001-01-14 12:46:05.542";SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");Date date=sdf.parse(birthday);System.out.println(date);}
}程序执行结果:
Sun Jan 14 12:46:05 CST 2001
15.8 Math数学计算相关推荐
- JavaScript中的Date日期、String字符串、Array数组、Math提供对数据的数学计算
一.Date 日期对象 日期对象可以储存任意一个日期,并且可以精确到毫秒数(1/1000 秒). 定义一个时间对象 : var Udate=new Date(); 注意:使用关键字new,Date() ...
- 常用工具类 Math:数学计算 Random:生成伪随机数 SecureRandom:生成安全的随机数 2020-2-13
常用工具类 阅读: 324836 Java的核心库提供了大量的现成的类供我们使用.本节我们介绍几个常用的工具类. Math 顾名思义,Math类就是用来进行数学计算的,它提供了大量的静态方法来便于我们 ...
- chatgpt赋能python:Python开立方函数math:让数学计算更加简单
Python开立方函数math:让数学计算更加简单 Python作为一种高级编程语言,提供了丰富的数学计算功能,其中就包括了开立方函数math.本篇文章将详细介绍math开立方函数在Python中的使 ...
- 有趣的数学计算 1/9801 (结果 00,01,02,03。。。97)(使用到 BigDecimal )
有趣的数学计算 1/9801 结果 00,01,02,03...97 ■代码 package com.sxz.demo;import java.math.BigDecimal; import jav ...
- Math数学工具类在java中如何使用?
Math数学工具类在java中如何使用? 一.Math数学工具类是什么? 在处理业务的时候,经常遇到一些有关数学方面的计算,特别是做测绘和监测业务时,显得出现的频率及其多, JDK提供了一个Math类 ...
- js函数语法:ASCII 码的相互转换,字符串操作,数学计算
ASCII 码的相互转换 for (let i = 'a'.charCodeAt(); i <= 'z'.charCodeAt(); i++) {a.push(String.fromCharCo ...
- MATLAB数学计算与工程分析范例教程,MATLAB数学计算与工程分析范例教程
基本信息 书名:MATLAB数学计算与工程分析范例教程 定价:28.00元 作者:石博强,赵金 编著 出版社:中国铁道出版社 出版日期:2005-05-01 ISBN:9787#113057596 字 ...
- python数值运算答案_笨方法学Python 习题3:数字和数学计算
数字和数学计算 print("I will now count my chickens") print("Hens",25+30/6) print(" ...
- 《“笨办法”学Python(第3版)》——习题3 数字和数学计算
本节书摘来自异步社区<"笨办法"学Python(第3版)>一书中的习题3,作者[美]Zed A. Shaw,王巍巍 译,更多章节内容可以访问云栖社区"异步社区 ...
- R开发(part2)--R语言中的数学计算
学习笔记,仅供参考,有错必纠 参考自:<R的极客理想>-- 张丹 文章目录 R开发 R语言中的数学计算 对数 加权平均.连乘.差分.秩.任意数.全体数 阶乘.组合.排列 累加.累乘.最小累 ...
最新文章
- 新站优化最应该考虑哪些方面
- html模块开发模板引擎,一个前端html模板处理引擎(javascript)
- pyqt5中sender方法介绍_【第五节】PyQt5事件和信号
- leetcode 1504. Count Submatrices With All Ones | 1504. 统计全 1 子矩形(单调栈)
- Mybatis中properties标签的使用
- debian java7_Debian 7 和 Debian 8 用户怎样安装 Oracle Java 8
- EIP-712 (一个对结构化数据的哈希标准)
- 《Python分布式计算》 第5章 云平台部署Python (Distributed Computing with Python)
- Xcode Developer Tools
- android系统锁屏锁怎么解决方法,安卓手机忘记锁屏密码解决方法【图文详解】...
- Linux之Redhat7如何破解密码
- 机器学习(11)——时间序列分析
- .net性能最高的EF分页写法
- 用python写一个PDF翻译软件
- 您需要Administrators提供的权限才能对此文件进行更改
- 【面经】2021 中国农业银行 笔试编程题
- iphone - - 怎么导出ipa文件
- javascript基础知识完整笔记--------权威指南基础篇
- YouTube和Vimeo视频的播放和暂停按钮(通过其API)
- 网络嗅探器的设计与实现 python实现 计算机网络课程设计