代码改变世界

Java数字处理类(上)

2018-07-16 15:16  隔壁吃瓜群众  阅读(454)  评论(0编辑  收藏  举报

数字格式化:

数字格式化在解决实际问题是非常普遍的,如表示某超市的商品价格,需要保留两位有效数字。
java主要对浮点型数据进行数字格式化操作,其中浮点型数据包括double型和float型数据,
在java中使用java.text.DecimalFormat格式化数字。
在java中没有格式化数据循环以下原则
如果数据绝对值大于0.001并且小于10000000,java将以常规小数形式表示
如果数据绝对值小于0.001并且大于10000000,使用科学记数法表示。
DecimalFormat是NumberFormat的一个子类,用于格式化十进制数字。
它可以将一些数字格式化为整数、浮点数、百分数等。通过使用该类可以为要输出的数字加上单位或控制数字的精度。
一般情况下可以在实例化DecimalFormat对象时传递数字格式化,也可以通过DecimalFormat类中的applyPattern()
方法来实现数字格式化

下面这组代码是在类中分别定义SimpleFormat()方法和UseApplyPatternMethodFormat() 方法实现两种格式化数字的方式

public class DecimalFormatSimpleDemo {
 //实例化DecimalFormat对象
  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);
  }
     static public void UserApplyPatternMethodFormat(String pattern,double value){
      DecimalFormat myFormat=new DecimalFormat();
      myFormat.applyPattern(pattern);
      System.out.println(value+""+pattern+""+myFormat.format(value));
     }
    
 public static void main(String[] args) {
  SimgleFormat("###,###.###", 123456.789);
  SimgleFormat("00000000.###kg",12346.789);
  //按照格式模板格式化数字,不存在的位以0显示。
  SimgleFormat("000000.000",123.78);
  UserApplyPatternMethodFormat("#.###%",0.789);
  //将小鼠点后格式化两位
  UserApplyPatternMethodFormat("###.##",123456.789);
  //将数字转化为千分数形式
  UserApplyPatternMethodFormat("0.00\u2030",0.789);
 }
}

执行结果:

123456.789###,###.###123,456.789
12346.78900000000.###kg00012346.789kg
123.78000000.000000123.780
0.789#.###%78.9%
123456.789###.##123456.79
0.7890.00‰789.00‰

数字运算

Math:在math类中提供了众多数学函数方法,主要包括三角函数方法、指数函数方法、取整函数方法、取最大值,常用运算方法,运算函数的方法,以及平均值函数方法,这些方法都被定位static形式

public class Mathematical_operation_method_三角函数 {
 public static void main(String[] args) {
  //取75°的弦
  System.out.println("75度的正玄机值:"+Math.sin(Math.PI/2));
  //取75°余弦
  System.out.println("75度的余弦值:"+Math.cos(75));
  //取75°正切
  System.out.println("75度的正切"+Math.tan(Math.PI/3));
  //取75°的平方根与商的反正弦
  System.out.println("75的平方根与商的反弦值"+Math.asin(Math.sqrt(75)/75));
  //取75°的平方根与商的反余弦
  System.out.println("75的平方根与商的反弦值"+Math.acos(Math.sqrt(75)/75));
  //取75°的反正切值
  System.out.println("75的反正切值"+Math.atan(1));
  //取75°的弧度值
  System.out.println("75°的弧度值"+Math.toRadians(75.0));
  //取Π/2的角度
  System.out.println("Π的角度值"+Math.toDegrees(Math.PI/2));
 }
}

执行结果:

75度的正玄机值:1.0
75度的余弦值:0.9217512697247493
75度的正切1.7320508075688767
75的平方根与商7853981633974483
75°的弧度值1.3089969389957472
Π的角度值90.0

指数函数方法:指数运算包括求方根、取对数以及求N次方的运算。实现指数函数运算

public class Specifiedfunction_指定函数 {
 public static void main(String[] args) {
  //求e的平方值
  System.out.println("e的平方值"+Math.log(2));
  //取以10为底2的对数
  System.out.println("以10为底2的数值:"+Math.log10(2));
  //取4的平方根
  System.out.println("4的平方根植"+Math.sqrt(4));
  //取8的立方根值
  System.out.println("8的立方根值"+Math.cbrt(8));
  //取2的2次方值
  System.out.println("2的2次方值"+Math.pow(2,2));
 }
}
执行结果:
e的平方值0.6931471805599453
以10为底2的数值:0.3010299956639812
4的平方根植2.0
8的立方根值2.0
2的2次方值4.0

在具体的问题中,取整数操作使用也很普通,所以java在Math类仲添加了数字取整方法。

public class Obtain_获取整函数的方法 {
 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));
 //将参数上加0.5后返回最近接近的整数
    System.out.println("使用round()方法取整"+Math.round(2.5));
 }
}
执行结果:
使用ceil()方法取整:6.0
使用floor()方法取整2.0
使用rint()方法取整3.0
使用round()方法取整3
 
如何取最大值、最小值、绝对值函数
在程序中最常用的方法最大值、最小值、绝对值等,在Math类中包括这些操作方法如下:、
public static double max(double a,double b);取a与b之间的最大值。
public static int min(double a,double b);取a与b之间的最小值,参数为整数型
public static long min(double a,double b);取a与b之间的最小值,参数为长整型
public static float min(double a,double b);取a与b之间的最小值,参数为浮点型
public static double min(double a,double b);取a与b之间的最小值,参数为双精度
public static int abs(int a):返回整型参数的绝对值.
public static float abs(float a):返回浮点型参数绝对值
public static double abs(double a):返回双精度参数的绝对值。
 
下面就是就用一组代码来求绝对值
 
public class Max_Min_Abstract绝对值 {
 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));//取参数的绝对值
 }
}
执行结果:
4和8较大者8
4和4.4较小者4.0
-7的绝对值:7
 
随机数:
在实际开发中产生随机数的使用很普遍的,所以在程序中进行产生随机数操作很重要。
java中主要提供了两种产生随机数,分别为:math类的random()方法和Random类提供的产生
各种数据类型随机数的方法。
 
Math.Random方法
在Math类中存在一个Random()方法,用于产生随机数字,这个方法默认生成等于0.0且小于1.0的double型随机数,即0<=Math.random()<1.0,虽然Math.Random()方法只可以产生0~1之间的double型数字,其实只要在Math.random()语句上稍加处理,就可以使用这个方法产生任意范围随机数。
 
public class Math_random_随机数方法 {
    public static int GetEvenNum(double num1,double num2){
  int s=(int)num1+(int)(Math.random()*(num2-num1));
  if(s%2==0){
   return s;
  }else{
   return s+1;
  }
    }
 public static void main(String[] args) {
  System.out.println("任意一个2-32之间的偶数:"+GetEvenNum(2,32));
 }
}
执行结果:
任意一个2-32之间的偶数:26