Java开发知识之Java的数字处理类Math类
Java开发知识之Java的数字处理类Math类
一丶Java.text.DecimalFormat类与NumberFormat类
首先 Java.text.DecimalFormat指的是DecimalFormat类在Java.text包中. 其中DecimalFormat类是NumberFormat的子类.
这个类的作用: 这个类的作用就是格式化我们的数值的.
比如:
看如下代码:
- public static void main(String[] args) {
- // TODO 自动生成的方法存根
- fmt("%",0.30); //百分号显示.
- fmt("##,##,##",123456); //以逗号隔开
- fmt("kg",12); //直接这样写kg在前.因为你没有加占位符.
- fmt("##kg",12); //加上##代表这里有两个字数字.我们后边有两个输出就是12kg
- }
//fmt是抽取的格式化方法. 参数parr是格式化字符串. Value就是传入的值- public static void fmt(String parr,double Value) {
- DecimalFormat fmt = new DecimalFormat(parr);
- String FmtStr = fmt.format(Value); //使用format进行格式化.返回一个字符串.
- System.out.println("Value = " + FmtStr);
- }
可能第一眼看着很晕. 其实就是按照你的格式进行格式化.
比如 %. 代表的就是百分号. %30 ##的意思就是占位.意思是我们后边跟的数在这里已经有位置了. 比如123456 ######需要六个##占位.然后我们每两个加上一个逗号.那么就会进行加逗号返回.
格式如下: 具体参照JAVA AP提供
上面程序输出结果
具体格式化类中也有很多方法使用.不过常用的了解即可.使用的时候知道有怎么一个类.我们去查询文档即可.
二丶数学类 Math
math类就是数学类.我们常用的数学方法都在这里.比如三角函数的求值. PI(3.14)等等. 具体方法不一一介绍了.下面一章节截图给出.
指数相关方法
3.取整相关方法
4.最大值最小值.绝地值
三丶随机数
1.Math中的随机数
随机数在java中可以使用math.random.
使用简介:
当我们使用Math.random的时候随机数的值如上.如果有n值.那么不会超过n. m+n 的时候.不会超过m+n的值.
代码例子:
- public static void main(String[] args) {
- //加上##代表这里有两个字数字.我们后边有两个输出就是12kg
- getRandomValue(1,10);
- }
- public static void getRandomValue(int argNum1,int argNum2) {
- int nValue =(int)(argNum1) + (int)(Math.random() * (argNum2 - argNum1));
- System.out.println(nValue);
- }
我们每次运行的时候随机数的值都不会大于10
m 在上面代码中代表的就是 (int)(argNum1);
n 在上面代码代表的是就是 (argNum2 - argNum1);
int nValue = m + math.random * n; 带入公式即可.
2.Random类中的随机数
上面使用了Math中的random方法.生成了随机数.其实Java也跟我们提供了Random类. 也是用来生成随机数的.有不同的地方.
不同的地方就是使用了随机数种子. 什么是随机数种子. 随机数种子可以看成一个数.在我们生成的随机数里面会使用这个种子参与运算符.
例如: xxx * 随机数种子 +xxxx / xxxx == xxxx; 当然这个公式是假的.我随便写的.目的就是告诉大家它的算法里面随机数种子会参与运算.
首先是构造函数:
两个构造.一个是默认生成一个种子.使用的时间. 另一个是我们填写的.
如果是默认的.随机数生成的都很类似.原因就是它使用了系统时间做运算.我们指定的就不会了.
看看提供的方法;
以nextint为例. 他的意思就是返回一个随机数. 小于n的值. 跟我们上面所讲的一样. m + n的值也可以.
- public static void main(String[] args) {
- //加上##代表这里有两个字数字.我们后边有两个输出就是12kg
- getRandomValue(1,10);
- }
- public static void getRandomValue(int argNum1,int argNum2) {
- Random r = new Random();
- int nValue = r.nextInt(argNum1 + (argNum2 - argNum1));
- System.out.println(nValue);
- }
如果使用随机的的种子.那么生成的随机数就不同.如果我们构造里面给定了值,那么每次生成就会一样的.原因就是你的随机数种子没有改变. 随机数种子. 顾名思义就是随机的数.你的数一直一样.那么生成的随机数也就是一样的了.
四丶Java中的大数处理类 Java.math.BigInteger 跟 Java.math.Decimat类
首先大数.什么是大数. 大数就是基本类型处理不下的数字. 举个简单的例子. 求阶乘. 求 2 - 2017的阶乘. 这个数不管是int类型.还是long类型 longlong类型(C++的) 都是放不下的.但是我们有需求怎么办.
此时我们就要想办法将它做出来. 第一种办法就是使用数组.自己模拟进位操作.乘法操作. 具体可以上网搜一下大数阶乘.当时考试的时候有怎么一道题目.当时做出来了.现在已经忘了.
废话不多说
我们说了Java是面相对象.方法都给你提供好了.你只管调用即可. 此时我们的 BigInteger类 跟 Decimat类就是将我们上面所述的步骤给封装起来了
BigInteger类: 大数处理整数类. 不带小数. 主要用于处理整数的 加减乘除
Decimat类: 带小数的大数处理
以BigInteger为例讲解
构造方法:
构造方法有四个.我们可以使用第三个. 意思就是传入一个字符串. 这个字符串是一个大数值.
方法提供:
方法提供了很多. 基本的加减乘除 还有求绝对值等等.不会一一讲解.
我们以基本的加减乘除为例 add subtract muiply divide
- public static void main(String[] args) {
- //加上##代表这里有两个字数字.我们后边有两个输出就是12kg
- ShowNumber();
- }
- public static void ShowNumber() {
- BigInteger a = new BigInteger("100000000000000000");
- BigInteger b = new BigInteger("400000000000000000");
- BigInteger c = a.add(b);
- System.out.println(c.toString());
- }
使用三个BigInteger类. 分别是 a b c. a b的值通过构造给定. a.add的时候.返回值也是一个BigInteger.所以用c接受.
最后输出的时候.需要调用 c.toString();方法. toString是父类Object的.BigInteger进行了重写.他重写的就是输出计算后的数值.
输出结果:
剩下的方法.我们需要用到自己查询JAVA API即可.
五丶总结
1.DecimalFormat类是NumberFormat的子类. 作用就是按照指定格式格式化数值.进行输出. 比如 %30等等. 在C++中要使用方法 sprintf或者 wsprintf是C 调用约定.
2.math数学类. math数学类提供了很多数学上的方法. 三角函数 取整 指数 最大最小值. 等方法.
3.学习了随机数类 Random.以及math中的随机函数random. 有一个公式 m + math.random * n; 结果小于m+n的值.不会等于m+n的值或者大于m+n的值. random类也可以使用这个公式.
Random类中提供了方法让我们获取随机数.
4.大数处理类 BigInteger (大数整数处理) 以及 Decimat类. (带小数的大数处理) 这两个类适用于需要使用大数的时候.提供了基本的加减乘除. 以及其他的数学函数. 取余 取绝对值.....
Java开发知识之Java的数字处理类Math类的更多相关文章
- Java开发知识之Java类的高级特性,内部类.以及包使用.跟常量关键字
Java开发知识之Java类的高级特性,内部类.以及包使用.跟常量关键字 一丶Java中包的机制 首先包其实就是个文件夹.作用就是管理类. Java中每次定义一个类的时候.通过Java编译之后.都会生 ...
- Java开发知识之Java字符串类
Java开发知识之Java字符串类 一丶简介 任何语言中.字符串都是很重要的.都涉及到字符串的处理. 例如C++中. 字符串使用内存. 并提供相应的函数进行处理 strcmp strcat strcp ...
- Java开发知识之Java中的Map结构
Java开发知识之Java中的Map结构 一丶Map接口 Map没有实现Collection接口,提供的是Key 到Value的映射. Map中.不能包含相同的Key,每个Key只能映射一个Value ...
- Java开发知识之Java中的集合Set接口以及子类应用
---恢复内容开始--- Java开发知识之Java中的集合Set接口以及子类应用 一丶Set接口以及作用 在上一讲.我们熟悉了接口的实现图.以及自己各有的子类. List接口主要存储的数据是可以重复 ...
- Java开发知识之Java中的集合上List接口以及子类讲解.
Java开发知识之Java中的集合类 一丶什么是集合类 如果你学习说数据结构,那么学习集合就很简单. 因为集合就是存储数据的结构. 例如 有链表结构 (list ) 还有 map结构.等等. 集合类就 ...
- Java开发知识之Java中的泛型
Java开发知识之Java中的泛型 一丶简介什么是泛型. 泛型就是指泛指任何数据类型. 就是把数据类型用泛型替代了. 这样是可以的. 二丶Java中的泛型 Java中,所有类的父类都是Object类. ...
- Java开发知识之Java的枚举
Java开发知识之Java的枚举 一丶什么是枚举 枚举可以理解为就是常量,在Java中我们定义常量.都是用 final语句. C++中都是用const关键字. 枚举跟C++概念都是一样的.就是特定的常 ...
- Java开发知识之Java的异常处理
Java开发知识之Java的异常处理 一丶异常概述 在讲解异常之前,我们要搞清楚.什么是异常. 通俗理解就是我们编写的程序出问题了.进行处理的一种手段. 比如我们的QQ.有的时候就崩溃了.比如出现xx ...
- Java开发知识之Java的继承多态跟接口*
Java开发知识之Java的继承多态跟接口 一丶继承 1.继承的写法 在Java中继承的 关键字是 extends 代表一个类继承另一个类. 继承的含义以及作用: 继承就是基于某个父类的扩展.制定出来 ...
随机推荐
- 推荐vim学习教程--《Vim 练级手册》
非常不错的vim学习资源,讲解的简单明了,可以作为速查工具,在忘记时就翻下.地址如下: <Vim 练级手册>
- MySQL基于左右值编码的树形数据库表结构设计
MySQL基于左右值编码的树形数据库表结构设计 在关系型数据库中设计树形的数据结构一直是一个十分考验开发者能力的,最常用的方案有主从表方案和继承关系(parent_id)方案.主从表方案的最大缺点 ...
- PS2键盘扫描码:通码与断码
键盘扫描码(实用于标准PC的101.102和104 键的键盘),按下发送通码,弹起发送断码. 说明: 第一类按键,通码为1字节,断码为 0xF0+通码 形式.如A键,其通码为 0x1C,断码为 0xF ...
- Oracle (分类、数据库类型、序列)
分类: 1.DDL (定义语句) create .alter .drop 不需要commit create table aaa( tt1 varchart ) 2. DML (操纵语句) lnset ...
- HTML入门10
目前,掌握了图像,视频和音频的嵌入,下面来谈iframe和embed.object嵌入网页, 嵌入简史,刚开始流行用嵌入框架然后不同部分显示i不同内容,可以解决下载速度慢时的问题: 慢慢的插件技术流行 ...
- Mysql 常见问题
------------------------------------------------ ------------------------------------------------ -- ...
- vuejs小白入门
后端做不好,是时候学习一下前端了,听说在很流行vue,那么久跟风学习一波. unbuntu下安装npm,然后安装node,这应该算是开发工具或者执行引擎吧. 感觉web前端框架怎么变,都是对html, ...
- vim 常用指令
其他命令 <c-L> 重绘屏幕 <c-z> 挂起vim回到shell,想继续vim只需要输入 fg <c-x-f> 文件路径提示 <c-N> 当前文件中 ...
- Mesos源码分析(15): Test Executor的运行
Test Executor的代码在src/examples/test_executor.cpp中 int main(int argc, char** argv) { TestExecutor ...
- Hadoop伪分布式配置
一步一步来: 安装VMWARE简单,安装CentOS也简单 但是,碰到了一个问题:安装的虚拟机没有图形化界面 最后,我选择了CentOS-7-x86_64-DVD-1503-01.iso镜像 配置用户 ...