文章目录

  • 一·数字格式化
  • 二·数字运算
    • (1)Math类
    • (2).常用的数学方法
      • 1.三角函数方法
      • 2.指数函数方法
      • 3.取整函数方法
      • (4)取最大值,最小值,绝对值函数方法
  • 三·随机数
    • (1).Math.random()方法
    • (2).Random类
  • 四·大数字运算
    • (1).BigInteger
    • (2).BigDecimal

一·数字格式化

数字格式化操作主要针对的是浮点型数据,包括double型和float型数据。在java中,使用java.text.DecimalFormat格式化数字
没有格式化的数据遵循如下原则:
1.如果数据绝对值大于0.001并且小于10000000(107),使用常规小数形式表示
2.如果数据绝对值小于0.001并且大于10000000,使用科学记数法表示
由于上述的输出格式不能满足解决实际问题的要求,通常将结果格式化为指定形式后输出。在java中可以使用DecimalFormat类进行格式化操作
DecimalFormat类是NumberFormat的一个子类,用于格式化十进制数字。他可以将一些数字格式化为整数,浮点数,百分数等。通过使用该类可以为要输出的数字加上单位或控制数字的精度。一般可以在实例化DecimalFormat对象时传递数字格式,也可以通过DecimalFormat类中的applyPattern()方法来实现数字格式化。
当格式化数字时,在DecimalFormat类中使用一些特殊字符构成一个格式化模板,使数字按照一定的特殊字符规则进行匹配。

字符 说明
0 代表阿拉伯数字,使用特殊字符"0"表示数字的一位阿拉伯数字,如果该位不存在数字
# 代表阿拉伯数字,使用特殊字符“#”表示数字的一位阿拉伯数字,如果该位存在数字,则显示字符;否则不显示
. 小数分隔符或货币小数分隔符
- 负号
, 分组分隔符
E 分隔科学计数法中的尾数和指数
% 本符号放置在数字的前缀或后缀,将数字乘以100显示为百分数
\u2030 本符号放置在数字的前缀或后缀,将数字乘以1000显示为千分数
\u00A4 本符号放置在数字的前缀或后缀,作为货币记号
本符号为单引号,当上述特殊字符出现在数字中时,应为特殊符号添加单引号,系统会将此符号视为普通符号处理
import java.text.DecimalFormat;public class Demo {static public void simpleformat(String pattern,double value){DecimalFormat f=new DecimalFormat(pattern);System.out.println(value+"通过"+pattern+"格式化为"+f.format(value));}static public void UseApplyPatten(String pattern,double value){DecimalFormat f=new DecimalFormat();f.applyPattern(pattern);System.out.println(value+"通过"+pattern+"格式化为"+f.format(value));}public static void main(String[] args) {//Scanner scan=new Scanner(System.in);//float f=scan.nextFloat();simpleformat(",###.###",123456.789);   //取三位小数格式 整数部分按三位分隔  等同于"###,###.###"simpleformat("###,##.###",123456.789);  //取三位小数格式 整数部分按二位分隔simpleformat("###,##.##",123456.779);    //取二位小数格式(有进位)  整数部分按二位分隔simpleformat("000000000.###kg",123456.789);  //取三位小数格式 然后再嵌套文本"kg"格式simpleformat("000000.000",123.78);  //取三位小数格式UseApplyPatten("#.###%",0.789);   //先乘100再取百分比格式UseApplyPatten("#.##",123456.789);  //取两位小数格式  取两位后进位UseApplyPatten("0.00\u2030",0.789);  //先乘1000再取两位小数的千分比格式}
}输出结果:
123456.789通过,###.###格式化为123,456.789
123456.789通过###,##.###格式化为12,34,56.789
123456.779通过###,##.##格式化为12,34,56.78
123456.789通过000000000.###kg格式化为000123456.789kg
123.78通过000000.000格式化为000123.780
0.789通过#.###%格式化为78.9%
123456.789通过#.##格式化为123456.79
0.789通过0.00‰格式化为789.00‰

以"0"特殊字符构成的模板进行格式化时,当数字某位不存在时,将显示0;以"#"特殊字符构成的模板进行格式化操作时,格式化后的数字位数与数字本身位数一致

在DecimalFormat类中除了可通过格式化模板来格式化数字外,还可以使用一些特殊方法对数字进行格式化设置

DecimalFormat myFormat=new DecimalFormat();
myFormat.setGroupingSize(2);   //设置将数字分组大小
myFormat.setGroupingUsed(true);   //设置是否支持分组
import java.text.DecimalFormat;public class Demo {public static void main(String[] args) {DecimalFormat myFormat=new DecimalFormat();myFormat.setGroupingSize(2);String s=myFormat.format(123456.789);System.out.println("将数字以每两个数字分组:"+s);myFormat.setGroupingUsed(false);System.out.println("不允许数字分组:"+myFormat.format(123456.789));}
}输出结果:
将数字以每两个数字分组:12,34,56.789
不允许数字分组:123456.789

二·数字运算

(1)Math类

Math提供了很多数学函数方法,主要包括三角函数方法,指数函数方法,取整函数方法,取最大值,最小值以及平均值函数方法,对数函数方法,平方根方法等,还提供一些常用的数学常量,如PI,E等
这些方法都被定义为static形式
以如下方法调用

Math.数学方法

常量调用

Math.PI;
Math.E;

(2).常用的数学方法

1.三角函数方法

方法 功能
public static double sin(double a) 返回角的三角正弦
public static double cos(double a) 返回角的三角余弦
public static double tan(double a) 返回角的三角正切
public static double asin(double a) 返回角的三角反正弦
public static double acos(double a) 返回角的三角反余弦
public static double attan(double a) 返回角的三角反正切
public static double toRadians(double angdeg) 将角度转换为弧度
public static double toDegrees(double angrad) 将弧度转换为角度

参数设置为double型。,以弧度代替角度实现,如1o 等于π/180弧度,180o 可以使用π弧度来表示
需要注意的是,角度与弧度的转换通常是不精确的

public class Demo2 {public static void main(String[] args) {System.out.println("90度正弦值:"+Math.sin(Math.PI/2));System.out.println("60度正切值:"+Math.tan(Math.PI/3));System.out.println("120度的弧度值:"+Math.toRadians(120.0));System.out.println("π/2角度值:"+Math.toDegrees(Math.PI/2)); }
}输出结果:
90度正弦值:1.0
60度正切值:1.7320508075688767
120度的弧度值:2.0943951023931953
π/2角度值:90.0

2.指数函数方法

方法 功能
public static double exp(double a) 得到ea
public static double log(double a) 取自然对数,lna
public static double log10(double a) 取以10为底的对数
public static double sqrt(double a) 用于取a的平方根
public static double cbrt(double a) 用于取a的立方根
public static double pow(double a,double b) 用于取a的b次方,ab

3.取整函数方法

方法 功能
public static double ceil(double a) 返回大于等于参数的最小整数
public static double floor(double a) 返回小于等于参数的最大整数
public static double rint(double a) 返回与参数最接近的整数,如果两个同为整数且同样接近,则结果取偶数
public static int round(float a) 返回与参数最近的整数
public static long round(double a) 返回与参数最近的整数,然后强制转换为长整型

如1.5

1.0和2.0距离数1.5都是0.5个单位长度,返回偶数2.0

public class Demo2 {public static void main(String[] args) {System.out.println(Math.ceil(5.2));System.out.println(Math.floor(2.5));System.out.println(Math.rint(2.7));System.out.println(Math.rint(2.5));System.out.println(Math.round(3.4f));  //float要加fSystem.out.println(Math.round(2.5));}
}
输出结果:
6.0
2.0
3.0
2.0
3
3

(4)取最大值,最小值,绝对值函数方法

方法 功能
public static double max(double a,double b) 取a与b之间的最大值
public static int min(int a,int b) 取a与b之间的最小值,参数为整型
public static long min(long a,long b) 取a与b之间的最小值,参数为长整型
public static float min(float a,float b) 取a与b之间的最小值,参数为浮点型
public static double min(double a,double b) 取a与b之间的最小值,参数为双精度型
public static int abs(int a) 返回整型参数的绝对值
public static long abs(long a) 返回长整型参数的绝对值
public static float abs(float a) 返回浮点型参数的绝对值
public static double abs(double a) 返回整型参数的绝对值

三·随机数

(1).Math.random()方法

Math类存在一个random()方法,用于产生随机数字/这个方法默认生成大于等于0.0且小于1.0的double型随机数。虽然Math.random()方法只可以产生0~1之间的double型数字,但只要在Math.random()语句上稍加处理,就可以使用这个方法产生任意范围的随机数

(int)(Math.random()*n)    //返回大于等于0且小于n的随机数
m+(int)(Math.random()*n)     //返回大于等于m且小于m+n(不包括m+n)的随机数
public class Demo2 {public static int getNum(double num1,double num2){int s=(int)num1+(int)(Math.random()*(num2-num1));if(s%2==0)return s;elsereturn s+1;}public static void main(String[] args) {System.out.println("任意一个2~50之间的偶数:"+getNum(2,50));}
}

也可以产生随机字符

(char)('a'+Math.random()*('z'-'a'+1));

(2).Random类

除了Math.random可以获得随机数之外,Random类也可以产生随机数

Random r=new Random()

以这种方式实例化对象时,java编译器会以系统当前时间作为随机生成器的种子。因为每时每刻时间不同,所以产生随机数不同。但是如果运行速度太快,也会产生两次运行结果相同的种子。
所以可以在实例化Random类对象时,设置随机数生成器种子

Random r=new Random(seedValue);    //seedValue:随机数生成器的种子

在Random类中提供了获得各种数据类型随机数的方法

方法 功能
pulic int nextInt() 返回一个随机整数
pulic int nextInt(int n) 返回一个大于等于0且小于n的随机整数
public long nextLong() 返回一个随机长整型值
public boolean nextBoolean() 返回一个随机布尔值
public float nextFloat() 返回一个随机浮点数值
public double nextDouble() 返回一个随机双精度值
public double nextGaussian() 返回一个概率密度为高斯分布的双精度值

四·大数字运算

(1).BigInteger

BigInteger类型的数字范围较Integer类型的数字范围要大得多。
Integer是int的包装类,int的最大值为231 -1,如果要计算更大的数字,使用Integer数据类型就无法实现了,所以用BigInteger类来处理更大的数字。BigInteger支持任意精度的整数,也就是说,在运算中BigInteger类型可以准确地表示任何大小的整数值而不会丢失信息
在BigInteger类中封装了多种操作,除了基本的加,减,乘,除之外,还提供了绝对值,相反数,最大公约数以及判断是否为质数等操作
BigInteger类有很多构造函数,最直接的一种方式是参数以字符串形式代表要处理的数字。

public BigInteger(String value)  //value是十进制字符串
BigInteger b=new BigInteger("2");

下面列举BigInteger类中常用的几种运算方法

方法 功能
public BigInteger add(BigInteger val) 做加法运算
public BigInteger subtract(BigInteger val) 做减法运算
public BigInteger multiply(BigInteger val) 做乘法运算
public BigInteger divide(BigInteger val) 做除法运算
public BigInteger remainder(BigInteger val) 做取余运算
public BigInteger[] divideAndRemainder(BigInteger val) 用数组返回余数和商,结果数组中第一个值为商,第二个值为余数
public BigInteger pow(int exponent) 进行取参数的exponent次方的操作
public BigInteger negate() 取相反数
public BigInteger shiftLeft(int n) 将数字左移n位,如果n为负数,做右移操作
public BigInteger shiftRight(int n) 将数字右移n位,如果n为负数,做左移操作
public BigInteger and(BigInteger val) 做与操作
public BigInteger or(BigInteger val) 做或操作
public BigInteger compareTo(BigInteger val) 做数字比较操作
public boolean equals(Object x) 当参数x是BigInetger类型的数字并且数值相等时,返回ture
public BigInteger min(BigInteger val) 返回较小的数值
public BigInteger max(BigInteger val) 返回较大的数值

(2).BigDecimal

BigDecimal和BigInteger都能实现大数字的运算,不同的是BigDecimal加入小数的概念。一般float和double型数据只可以用来做科学计算或工程计算,但由于在商业计算中要求数字精度比较高,所以要用到BigDecimal类。BigDecimal类支持任何精度的定点数,可以用它来精确计算货币值
在BigDecimal类中常用的两个构造方法

public BigDecimal(double val)    //实例化时将双精度型转换为BigDecimal类
public BigDecimal(String val)    //实例化时将字符串形式转换为BigDecimal类

BigDecimal类型的数字可以用来做超大浮点数的运算,如加,减,乘,除等。在所有的运算中,除法是最复杂的,因为在除不尽的情况下末位小数点的处理是需要考虑的。

方法 功能
public BigDecimal add(BigDecimal val) 做加法操作
public BigDecimal subtract(BigDecimal val) 做减法操作
public BigDecimal multiply(BigDecimal val) 做乘法法操作
public BigDecimal divide(BigDecimal val,int scale,int roundingMode) 做除法操作,3个参数分别代表除数,商的小数后的位数,近似处理模式

BigDecimal类中的divide()方法有多种配置,用于返回商末位小数点的处理,模式的名称与含义如下

模式 含义
BigDecimal.ROUND_UP 商的最后一位如果大于0,则向前进位,正负数都如此
BigDecimal.ROUND_DOWN 商的最后一位无论是什么数字,都省略
BigDecimal.ROUND_CEILING 商如果是正数,按照ROUND_UP模式处理,如果是负数,按照ROUND_DOWN模式处理。这两种模式的处理都会使近似值大于等于实际值
BigDecimal.ROUND_FLOOR 与ROUND_CEILING模式相反。商如果是正数,按照ROUND_DOWN模式处理,如果是负数,按照ROUND_UP模式处理。这两种模式的处理都会使近似值小于于等于实际值
BigDecimal.ROUND_HALF_DOWN 对商进行四舍五入操作,如果商最后一位小于等于5,则舍弃,如果最后一位大于5,则做进位操作。如7.5≈7
BigDecimal.ROUND_HALF_UP 对商进行四舍五入操作,如果商最后一位小于5,则舍弃,如果最后一位大于等于5,则做进位操作。如7.5≈8
BigDecimal.ROUND_HALF_EVEN 如果商的倒数第二位为奇数,则按照ROUND_HALF_UP处理;如果倒数第二位为偶数,则按照ROUND_HALF_DOWN处理。如:7.5≈8,8.5≈8

javaSE 数字处理类相关推荐

  1. java中math类的作用_Java开发知识之Java的数字处理类Math类

    Java开发知识之Java的数字处理类Math类 一丶Java.text.DecimalFormat类与NumberFormat类 首先 Java.text.DecimalFormat指的是Decim ...

  2. 9.数字处理类(遗留)

    我这些学习笔记,记录的都是我自己认为的知识点,可能以后再看的时候还要翻书,但是可以用来定位到准确的书中示例的位置,减少翻书重找的时间,利于自身知识体系的搭建.                   se ...

  3. java对数字的处理_[java初探10]__关于数字处理类

    前言 在我们的日常开发过程中,我们会经常性的使用到数字类型的数据,同时,也会有众多的对数字处理的需求,针对这个方面的问题,在JAVA语言中.提供解决方法的类就是数字处理类 java中的数字处理类包括: ...

  4. JavaSE常用类day08

    JavaSE常用类day08 基本类型和字符串之间的转换 8种包装类提供不同类型间的转换方式: Number父类中提供的6个共性方法 parseXXX()静态方法 package category.D ...

  5. 用JAVA编写一个控制台程序,实现学生注册功能,要求有数组、字符串、循环、包装类、数字处理类

    这是基于作业,为了完成要求而拼凑而成的管理系统.学生人数用到了一维数组,输入学生信息用到了字符串,循环就不多解释了,包装类使用了equalas,最后为了拼凑出数字处理类的功能,勉强想到了生成验证码用R ...

  6. Java从入门到精通 第九章 数字处理类

    Java从入门到精通 第九章 数字处理类 一.数字格式化 二.数学运算 1)Math类 2)常用数学运算方法 三.随机数 1)Math.random()方法 2)Random类 四.大数字运算 1)B ...

  7. JAVA数字处理类使用2

    尝试开发一个程序: 定义一个求圆面积的方法,其中以圆半径作为参数,将计算结果保留5位小数. import java.text.DecimalFormat;/*** 尝试开发一个程序:* 定义一个求圆面 ...

  8. JAVASE——File类

    文章目录 简介 注意点: 实现代码 判断文件是否存在 以文件的形式创建 以目录的形式创建 补充 如何获取父路径 第一种 第二种 如何获取绝对路径 获取文件名 判断是否是一个目录: 判断是否是一个文件: ...

  9. Java有哪些常用的转换类,JavaSE——常用类、类型转换

    声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权:凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记. 不可变字符串String可以让它可变,只是不可变是为了能进行 ...

最新文章

  1. facebox目标检测改进
  2. 文件服务器传输,文件服务器传输
  3. Centos 6.5 搭建NFS服务器笔记
  4. linux node 文件存放目录_Linux文件与目录结构
  5. TCP/IP的基本介绍
  6. Spring MVC @RequestMapping注解详解
  7. troubleshoot之:分析OutOfMemoryError异常
  8. Node的底层调用你知道吗?
  9. php表格合并_如何在php生成的表中合并单元格?
  10. 如何调用common.js
  11. 完美解决onenote同步速度慢(修改hosts文件)以及如何取得文件修改权限
  12. 安卓Vitamio播放课程视频
  13. CL210管理存储--实现块存储
  14. ncbi查找目的基因序列_如何获得基因序列——在NCBI中查找目的基因实例.PDF
  15. 【win10专业版】新建账户激活 Office 2019
  16. 【2】非线性方程求解函数vpasolve
  17. 【菜鸟窝出品】 python的变量和逻辑基础(python数据分析入门)
  18. 如何减少页面的重绘和回流(14)
  19. 信息安全之操作系统安全防护技术
  20. 导航栏的返回文字修改

热门文章

  1. 一、软考·系统架构师——计算机基础
  2. gwas之一年两点blup值以及遗传力的计算
  3. 搭建MarkDown文档整理对外展示网站
  4. oppo计算机打不开怎么回事,《oppo手机文件夹打不开怎么办?》 所有表格打不开怎么办...
  5. 折线图转成光滑曲线并求拐点
  6. 王红梅《算法设计与分析(第3版)》部分课后实验代码
  7. 品牌小红书kol推广怎么选?掌握这几点,让ta的效果最大化
  8. 高尔夫模拟器,极致的室内高尔夫球运动体验!
  9. NFT Insider #50:汇丰银行进驻The Sandbox,YGG与MetalCore达成合作
  10. 令 P​i 表示第 i 个素数。现任给两个正整数 M≤N≤10​4​​ ,请输出 P​M到 PN​​ 的所有素数。来源PAT