zoukankan      html  css  js  c++  java
  • Java数字处理类(上)

    数字格式化:

    数字格式化在解决实际问题是非常普遍的,如表示某超市的商品价格,需要保留两位有效数字。
    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.00u2030",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
  • 相关阅读:
    Java User Thread and Daemon Thread
    BFS 和 DFS
    fail-fast vs fail-safe iterator in Java
    通过先序遍历和中序遍历后的序列还原二叉树
    单例模式总结
    TCP性能陷阱
    数据库事务的四大特性和事务隔离级别
    深入理解Java虚拟机- 学习笔记
    字符串,引用变量与常量池
    深入理解Java虚拟机- 学习笔记
  • 原文地址:https://www.cnblogs.com/wzhdcyy/p/9317029.html
Copyright © 2011-2022 走看看