第二十二章_数字处理类

第二十二章 数字处理类


提纲

  • 22.1 数字格式化类
    • 22.1.1 为什么要格式化数字
    • 22.1.2 Java数据遵原则
    • 22.1.3 DecimalFormat类
    • 22.1.4 DecimalFormat类中的特殊方法
  • 22.2 Math类
    • 22.2.1 概念
    • 22.2.2 Math方法调用方式
    • 22.2.3 常用数学运算方法
      • 22.2.3.1 三角函数方法
      • 22.2.3.2 指数函数方法
      • 22.2.3.3 取整函数方法
    • 22.2.4 随机数
  • 22.3 Random类
  • 22.4 BigInteger类
  • 22.5 BigDecimal类
  • 22.6 作业

22.1 数字格式化类

  • 22.1.1 为什么要格式化数字:数字的格式化在解决实际问题时非常普遍,如表示超市的商品价格,需要保留两位有效数字。Java主要对浮点型数据进行数字格式化操作,其中浮点型数据包括double型和float型数据,在Java中使用java.text.DecimalFormat格式化数字,这里将着重讲解DecimalFormat类。
  • 22.1.2 Java数据遵原则:Java中没有格式化的数据遵循以下原则:
    • 如果数据绝对值大于0.001并且小于10000000,Java将以常规小数形式表示。
    • 如果数据绝对值小于0.001或者大于10000000,Java将以科学记数法表示。
  • 22.1.3 DecimalFormat类:由于上述输出格式不能满足解决实际问题的要求,通常将结果格式化为指定形式后输出。在Java中可以使用DecimalFormat类进行格式化操作。
    1. 概念:DecimalFormat类是抽象类NumberFormat类的一个子类,用于格式化十进制数字。它可以将一些数字格式化为整数、浮点数、百分数等。一般情况下可以在实例化DecimalFormat对象时传递数字格式,也可以通过DecimalFormat类中的applyPattern()方法来实现数字格式化。

    2. 当格式化数字时,在DecimalFormat类中使用一些特殊字符构成一个格式化模板,使数字按照一定的特殊字符规则进行匹配。

      1. 0:阿拉伯数字,如果不存在则显示为 0。
      2. #:阿拉伯数字。
      3. .:小数分隔符或货币小数分隔符。
      4. -:减号。
      5. ,:分组分隔符。
      6. E:分隔科学计数法中的尾数和指数。在前缀或后缀中无需加引号。
      7. ;:分隔正数和负数子模式。
      8. %:乘以 100 并显示为百分数。
      9. \u2030:乘以 1000 并显示为千分数。
      10. \u00A4:货币记号,由货币符号替换。如果两个同时出现,则用国际货币符号替换。如果出现在某个模式中,则使用货币小数分隔符,而不使用小数分隔符。
      11. ‘:用于在前缀或或后缀中为特殊字符加引号,例如 "’#‘#" 将 123 格式化为 “#123”。要创建单引号本身,请连续使用两个单引号:"# o’'clock"。
    3. 举例:

       public class DecimalDemo {
       	//使用实例化对象时设置格式化模式
       	public static void simgleFormat(String pattern, double value){
       		DecimalFormat df = new DecimalFormat(pattern);
       		String output = df.format(value);
       		System.out.println("原数字:"+value+",格式化模板:"+pattern+",格式化后:"+output);
       	}
       	//使用applyPattern()方法对数字进行格式化
       	public static void applyFormat(String pattern, double value){
       		DecimalFormat df = new DecimalFormat();//实例化DecimalFormat对象
       		df.applyPattern(pattern);//调用applyPattern()方法设置格式化模板
       		String output = df.format(value);
       		System.out.println("原数字:"+value+",格式化模板:"+pattern+",格式化后:"+output);
       	}
       	public static void main(String[] args) {
       		//1.格式化小数,该位不存在时,显示0。整数部分出现的0,如果位置上不存在数字用0补充
       		simgleFormat("0000000000.000", 123456.78);
       		//2.格式化小数,多余的位数会五舍六入。
       		simgleFormat("000,000.000", 123456.7895);
       		//3.小数后如果位置上不存在数字则不显示,整数部分没有作处理:当小数点前为0时,就会省略0。
       		applyFormat(".###", 0.78);
       		//4.整数部分加上#会进行处理,整数位置上不存在数字则不显示
       		applyFormat("##.###", 0.78);
       		//5.相当于*100 并且保留最多两位小数使用百分数,并保留最多两位小数
       		simgleFormat(".##%", 0.7895);
       		//6.保留两位小数,且小数后两位用0补充
       		simgleFormat(".00%", 0.78);
       		//7.使用千分号\u2030, 相当于*1000
       		simgleFormat(".##\u2030", 0.234567);
       		simgleFormat(".##\u2030", 11.234567);
       		//8.使用.00
       		simgleFormat(".00\u2030", 0.2);
       		simgleFormat(".00\u2030", 11.2);
       		//9.\u00A4货币标识,放在数字前(默认语言环境货币)
       		simgleFormat("\u00A4##.##", 12.345);
       		//10.'Money Amount:',###.###'$',单引号中的内容会当作普通字符处理
       		simgleFormat("'Money Amount:',###.###'$'", 123.4);
       		simgleFormat("'Money Amount:',###.###'$'", 123.45678);
       	}
       }
       //执行结果
       原数字:123456.78,格式化模板:0000000000.000,格式化后:0000123456.780
       原数字:123456.7895,格式化模板:000,000.000,格式化后:123,456.790
       原数字:0.78,格式化模板:.###,格式化后:.78
       原数字:0.78,格式化模板:##.###,格式化后:0.78
       原数字:0.7895,格式化模板:.##%,格式化后:78.95%
       原数字:0.78,格式化模板:.00%,格式化后:78.00%
       原数字:0.234567,格式化模板:.##‰,格式化后:234.57‰
       原数字:11.234567,格式化模板:.##‰,格式化后:11234.57‰
       原数字:0.2,格式化模板:.00‰,格式化后:200.00‰
       原数字:11.2,格式化模板:.00‰,格式化后:11200.00‰
       原数字:12.345,格式化模板:¤##.##,格式化后:¥12.34
       原数字:123.4,格式化模板:'Money Amount:',###.###'$',格式化后:Money Amount:123.4$
       原数字:123.45678,格式化模板:'Money Amount:',###.###'$',格式化后:Money Amount:123.457$
      
  • 22.1.4 DecimalFormat类中的特殊方法
    1. 方法:setGroupingSize(int newValue);返回值:void;功能释义:设置分组大小。只分整数部分。

    2. 方法:setGroupingUsed(boolean b);返回值:void;功能释义:设置是否支持分组。

       public static void main(String[] args) {
       	DecimalFormat df = new DecimalFormat();
       	df.setGroupingSize(2);
       	String output = df.format(123456.789);
       	System.out.println("将数字以每两个数字分组:"+output);
       	df.setGroupingUsed(false);
       	String output2 = df.format(123456.789);
       	System.out.println("不允许的数字分组:"+output2);
       }
       //执行结果
       将数字以每两个数字分组:12,34,56.789
       不允许的数字分组:123456.789
      

22.2 Math类

  • 22.2.1 概念:在Math类中提供了众多数学函数方法,主要包括三角函数方法、指数函数方法、取整函数方法、取最大值、最小值以及平均值函数方法,这些都被定义为static形式,所以在程序中应用比较简便。

  • 22.2.2 Math方法调用方式:

      Math.数学方法
      Math.常量名
    
  • 22.2.3 常用数学运算方法
    在这里插入图片描述

    • 22.2.3.1 三角函数方法:以下所有方法返回值均为double

      1. public static double sin(double a):返回角的三角正弦。

      2. public static double cos(double a):返回角的三角余弦。

      3. public static double tan(double a):返回角的三角正切。

      4. public static double asin(double a):返回一个值的反正弦。

      5. public static double acos(double a):返回一个值的反余弦。

      6. public static double atan(double a):返回一个值的反正切。

      7. public static double toRadians(double angdeg):将角度转换为弧度。

      8. public static double toDegrees(double angrad):将弧度转换为角度。

      9. 举例:

         public static void main(String[] args) {
         	//取90°的正弦、余弦、正切
         	System.out.println("90°的正弦值:"+Math.sin(Math.PI/2));
         	//接近于0
         	System.out.println("90°的余弦值:"+Math.cos(Math.PI/2));
         	//取0°的余弦
         	System.out.println("0°的余弦值:"+Math.cos(0));
         	//取60°的正切
         	System.out.println("60°的正切值:"+Math.tan(Math.PI/3));
         	//取120°的弧度值
         	System.out.println("120°的弧度值:"+Math.toRadians(120);
         	//取π/2的角度
         	System.out.println("π/2的角度值:"+Math.toDegrees(Math.PI/2));
         }
         //执行结果
         90°的正弦值:1.0
         0°的余弦值:1.0
         60°的正切值:0.320040389379563
         120°的弧度值:2.0943951023931953
         π/2的角度值:90.0
        

      注意:角度与弧度的转换通常是不精确的。

    • 22.2.3.2 指数函数方法

      1. public static double exp(double a):用于获取e的a次方,即取e^a。e=2.7182818284590452354。e,作为数学常数,是自然对数函数的底数。有时称它为欧拉数(Euler number),以瑞士数学家欧拉命名。

      2. public static double log(double a):返回 double 值的自然对数(底数是 e)。

      3. public static double log10(double a):返回 double 值的底数为 10 的对数。

      4. public static double sqrt(double a):返回正确舍入的 double 值的正平方根。其中,a的值不能为负值。

      5. public static double cbrt(double a):返回 double 值的立方根。

      6. public static double pow(double a, double b):返回第一个参数的第二个参数次幂的值。即a^b。

      7. 举例:

         public static void main(String[] args) {
         	//1.取e的2次方
         	System.out.println("e的平方值:"+Math.exp(2));
         	//2.取以e为底2的对数
         	System.out.println("e为底2的对数:"+Math.log(2));
         	//3.取以10为底2的对数
         	System.out.println("10为底2的对数:"+Math.log10(2));
         	//4.取4的平方根
         	System.out.println("4的平方根:"+Math.sqrt(4));
         	//5.取8的立方根
         	System.out.println("8的立方根:"+Math.cbrt(8));
         	//6.取2的2次方
         	System.out.println("2的2次方:"+Math.pow(2, 2));
         }
         //执行结果
         e的平方值:7.38905609893065
         e为底2的对数:0.6931471805599453
         10为底2的对数:0.3010299956639812
         4的平方根:2.0
         8的立方根:2.0
         2的2次方:4.0
        
    • 22.2.3.3 取整函数方法

      1. public static double ceil(double a):返回大于等于参数的最小整数。向上取整。

      2. public static double floor(double a):返回小于等于参数的最大整数,向下取整。

      3. public static double rint(double a):返回与参数最接近的整数,如果两个同为整数且同样相近,则结果取偶数。

      4. public static int round(float a):返回最接近参数的 int。四舍五入。

      5. public static long round(double a):返回最接近参数的 long。

      6. 举例:

         public static void main(String[] args) {
         	//1.返回一个大于等于参数的整数
         	System.out.println("使用ceil()方法取整5.2:"+Math.ceil(5.2));
         	//2.返回一个小于等于参数的整数
         	System.out.println("使用floor()方法取整5.6:"+Math.floor(5.6));
         	//3.返回与参数最接近的整数
         	System.out.println("使用rint()方法取整5.4:"+Math.rint(5.4));
         	System.out.println("使用rint()方法取整5.7:"+Math.rint(5.7));
         	System.out.println("使用rint()方法取整5.5:"+Math.rint(5.5));
         	System.out.println("使用rint()方法取整6.5:"+Math.rint(6.5));
         	//4.返回最接近参数的 int。
         	System.out.println("使用round()方法取整3.4f:"+Math.round(3.4f));
         	System.out.println("使用round()方法取整3.6f:"+Math.round(3.6f));
         	System.out.println("使用round()方法取整3.5f:"+Math.round(3.5f));
         	System.out.println("使用round()方法取整4.5f:"+Math.round(4.5f));
         	//5.返回最接近参数的 long。
         	System.out.println("使用round()方法取整4.5f:"+Math.round(4.5));
         }
         //执行结果
         使用ceil()方法取整5.2:6.0
         使用floor()方法取整5.6:5.0
         使用rint()方法取整5.4:5.0
         使用rint()方法取整5.7:6.0
         使用rint()方法取整5.5:6.0
         使用rint()方法取整6.5:6.0
         使用round()方法取整3.4f:3
         使用round()方法取整3.6f:4
         使用round()方法取整3.5f:4
         使用round()方法取整4.5f:5
         使用round()方法取整4.5f:5
        
  • 22.2.4 随机数Math.random()方法

    1. Math.random()方法释义:此方法用于产生随机数。这个方法默认生成大于等于且小1.0的double型随机数,即0<=Math.random()<1.0。
    2. 如何随机出0-n的随机数:(int) (Math.random()*n)。
    3. 如何随机出m-n的随机数,即大于等于m且小于n:m+(int) (Math.random()*(n-m))。
    4. 随机生成a~z中的一个字母:(char)(‘a’+Math.random()*(‘z’-‘a’+1))。
    5. 随机生成任意区间的一个字符:(char)(char1+Math.random()*(char2-char1+1))。

22.3 Random类

  1. 除了Math类中的random()方法可以获取随机数之外,Java中还提供了一种可以获取随机数的方式,那就是java.util.Random类。可以通过实例化一个Random对象创建一个随机数生成器。
  2. Random类生成随机数原理:Java编译器以系统当前时间作为随机数生成器的种子,因为每时每刻的时间不可能相同,所以产生的随机数不同,但是如果运行速度太快,也会产生两次运行结果相同的随机数。
  3. 构造方法:Random(long seed):seed,随机数生成器的种子。
  4. 常用方法:
    1. public int nextInt():返回一个随机整数。

    2. public int nextInt(int n):返回一个大于等于0且小于n的随机数。

    3. public long nextLong():返回一个随机长整型值。

    4. public boolean nextBoolean():返回一个随机布尔型值。

    5. public float nextFloat():返回一个随机浮点型值。

    6. public double nextDouble():返回一个随机双精度型值。

    7. public double nextGaussian():返回一个概率密度为高斯分布的双精度值。它是取自此随机数生成器序列的、呈高斯(“正态”)分布的 double 值,其平均值是 0.0,标准差是 1.0。

    8. 举例:

       public static void main(String[] args) {
       	Random r = new Random();
       	//1.随机产生一个整数
       	System.out.println("随机产生一个整数:"+r.nextInt());
       	//2.随机产生一个大于等于0且小于10的整数
       	System.out.println("随机产生一个大于等于0且小于10的整数:"+r.nextInt(10));
       	//3.随机产生一个布尔型的值
       	System.out.println("随机产生一个布尔型的值:"+r.nextBoolean());
       	//4.随机产生一个双精度型的值
           System.out.println("随机产生一个双精度浮点型的值:"+r.nextDouble());
           //5.随机产生一个浮点型的值
           System.out.println("随机产生一个单精度浮点型的值:"+r.nextFloat());
       	//6.随机产生一个概率密度为高斯分布的双精度值
       	System.out.println("随机产生一个概率密度为高斯分布的双精度值:"+r.nextGaussian());
       }
       //执行结果
       随机产生一个整数:561645054
       随机产生一个大于等于0且小于10的整数:7
       随机产生一个布尔型的值:true
       随机产生一个双精度型的值:0.45344081093797783
       随机产生一个浮点型的值:0.85647845
       随机产生一个概率密度为高斯分布的双精度值:1.2081404405125047
      

22.4 BigInteger类

  1. 为什么使用BigInteger类:由于int的最大值为2^31-1,如果要计算更大的数字,Integer就无法实现了,所以Java中提供了BigInteger类来处理更大的数字。BigInteger支持任意精度的整数,也就是说在运算中BigInteger类型可以准确地表示任何大小的整数值而不会丢失任何信息.在BigInteger类中封装了多种操作,除了基本加减乘除外,还提供了绝对值、相反数、最大公约数、以及判断是否为质数等操作。
  2. 构造方法
    1. BigInteger(String val):将十进制数字字符串转换为BigInteger形式。

       BigInteger bi = new BigInteger("22");
      
  3. 常用方法
    1. public BigInteger add(BigInteger val):返回其值为 (this + val) 的 BigInteger。加法。

    2. public BigInteger subtract(BigInteger val): 返回其值为 (this - val) 的 BigInteger。减法。

    3. public BigInteger multiply(BigInteger val):返回其值为 (this * val) 的 BigInteger。乘法。

    4. public BigInteger divide(BigInteger val):返回其值为 (this / val) 的 BigInteger。除法。

    5. public BigInteger remainder(BigInteger val):返回其值为 (this % val) 的 BigInteger。取余。

    6. public BigInteger[] divideAndRemainder(BigInteger val):返回包含 (this / val) 后跟 (this % val) 的两个 BigInteger 的数组。

    7. public BigInteger pow(int exponent):返回其值为 (this ^ exponent) 的 BigInteger。

    8. public BigInteger negate():返回其值是 (-this) 的 BigInteger。

    9. public BigInteger shiftLeft(int n):返回其值为 (this << n) 的 BigInteger。

    10. public BigInteger shiftRight(int n):返回其值为 (this >> n) 的 BigInteger。

    11. public BigInteger and(BigInteger val):返回其值为 (this & val) 的 BigInteger。

    12. public BigInteger or(BigInteger val):返回其值为 (this | val) 的 BigInteger。

    13. public int compareTo(BigInteger val):将此 BigInteger 与指定的 BigInteger 进行比较。

    14. public boolean equals(Object x):比较此 BigInteger 与指定的 Object 的相等性。

    15. public BigInteger min(BigInteger val):返回此 BigInteger 和 val 的最小值。

    16. public BigInteger max(BigInteger val):返回此 BigInteger 和 val 的最大值。

    17. 举例:

      public static void main(String[] args) {
      	//实例化一个大数字
      	BigInteger bi = new BigInteger("4");
      	BigInteger bi2 = new BigInteger("2");
      	//1.取该大数字加2的操作
      	System.out.println("加法操作:"+bi.add(bi2));
      	//2.取该大数字减2的操作
      	System.out.println("减法操作:"+bi.subtract(bi2));
      	//3.取该大数字乘2的操作
      	System.out.println("乘法操作:"+bi.multiply(bi2));
      	//4.取该大数字除2的操作
      	System.out.println("除法操作:"+bi.divide(bi2));
      	//5.取该大数字除以3的商和余数
      	BigInteger bi3 = bi.remainder(bi2);
      	System.out.println("4/2的余数:"+bi3);
      	BigInteger[] biarr = bi.divideAndRemainder(new BigInteger("3"));
      	System.out.println("4/3取商:"+biarr[0]+",4/3取余数:"+biarr[1]);
      	//6.取该大数字的2次方
      	System.out.println("做二次方操作:"+bi.pow(2));
      	//7.取该大数字的相反数
      	System.out.println("取相反数操作:"+bi.negate());
      }	
      //执行结果
      加法操作:6
      减法操作:2
      乘法操作:8
      除法操作:2
      取商:1,取余数:1
      做二次方操作:16
      取相反数操作:-4
      

22.5 BigDecimal类

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

  2. 常用构造方法

    1. BigDecimal(double val):将 double 转换为 BigDecimal,后者是 double 的二进制浮点值准确的十进制表示形式。
    2. BigDecimal(String val):将 BigDecimal 的字符串表示形式转换为 BigDecimal。
  3. 常用方法加减乘除

    1. public BigDecimal add(BigDecimal augend):返回一个 BigDecimal,其值为 (this + augend),其标度为 max(this.scale(), augend.scale())。加法。
    2. public BigDecimal subtract(BigDecimal subtrahend):返回一个 BigDecimal,其值为 (this - subtrahend),其标度为 max(this.scale(), subtrahend.scale())。减法。
    3. public BigDecimal multiply(BigDecimal multiplicand):返回一个 BigDecimal,其值为 (this × multiplicand),其标度为 (this.scale() + multiplicand.scale())。乘法。
    4. public BigDecimal divide(BigDecimal divisor, int scale, RoundingMode roundingMode):做除法操作,方法中三个参数分别代表:divisor - 此 BigDecimal 要除以的值。scale - 要返回的 BigDecimal 小数点后的位数。roundingMode - 要应用的舍入模式。roundingMode近似处理模式BigDecimal类中提供了多种处理模式:
      • BigDecimal.ROUND_UP:商的最后一位如果大于0,则向前进位,正负数都如此。
      • BigDecimal.ROUND_DOWN:商的最后一位无论是什么数字都省略。
      • BigDecimal.ROUND_CEILING:商如果是正数,按照ROUND_UP模式处理;如果是负数,按照ROUND_DOWN模式处理。这种模式的处理都会使近似值大于等于实际值。即向上取整。
      • BigDecimal.ROUND_FLOOR:与ROUND_CEILING模式相反。即向下取整。
      • BigDecimal.ROUND_HALF_DOWN:向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则为上舍入的舍入模式。
      • BigDecimal.ROUND_HALF_UP:向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则为向上舍入的舍入模式。
      • BigDecimal.ROUND_HALF_EVEN:如果商的倒数第二位为奇数,则按照ROUND_HALF_UP处理;如果为偶数,则按照ROUND_HALF_DOWN处理。
  4. 举例:

     public class BigDecimalMethod {
     	static final int location = 10;//保留小数位数
     	/**
     	 * 定义加法方法,参数为加数与被加数
     	 * @param value1 相加的第一个数
     	 * @param value2 相加的第二个数
     	 * @return 两数之和
     	 */
     	public BigDecimal add(double value1, double value2){
     		//实例化Decimal对象
     		BigDecimal bd1 = new BigDecimal(Double.toString(value1));
     		BigDecimal bd2 = new BigDecimal(Double.toString(value2));
     		return bd1.add(bd2);//调用加法方法
     	}
     	
     	/**
     	 * 定义减法方法,参数为减数与被减数
     	 * @param value1 被减数
     	 * @param value2 减数
     	 * @return 两数之差
     	 */
     	public BigDecimal sub(double value1, double value2){
     		BigDecimal bd1 = new BigDecimal(Double.toString(value1));
     		BigDecimal bd2 = new BigDecimal(Double.toString(value2));
     		return bd1.subtract(bd2);//调用减法方法
     	}
     	
     	/**
     	 * 定义乘法方法,参数为乘数为被乘数
     	 * @param value1 第一个乘数
     	 * @param value2 第二个乘数
     	 * @return 相乘结果
     	 */
     	public BigDecimal mul(double value1, double value2){
     		BigDecimal bd1 = new BigDecimal(Double.toString(value1));
     		BigDecimal bd2 = new BigDecimal(Double.toString(value2));
     		return bd1.multiply(bd2);//调用乘法方法
     	}
     	
     	/**
     	 * 定义除法方法
     	 * @param value1 除数
     	 * @param value2 被除数
     	 * @param b 商小数点后的位数
     	 * @return 相除的结果
     	 */
     	public BigDecimal div(double value1, double value2, int b){
     		if (b < 0) {
     			System.out.println("保留小数位值必须大于等于0");
     		}
     		BigDecimal bd1 = new BigDecimal(Double.toString(value1));
     		BigDecimal bd2 = new BigDecimal(Double.toString(value2));
     		return bd1.divide(bd2, b, BigDecimal.ROUND_HALF_UP);
     	}
     	
     	/**
     	 * 定义除法方法
     	 * @param value1 除数
     	 * @param value2 被除数
     	 * @return 相除的结果
     	 */
     	public BigDecimal div(double value1, double value2){
     		return div(value1, value2, location);
     	}
     	
     	public static void main(String[] args) {
     		BigDecimalMethod bdm = new BigDecimalMethod();
     		System.out.println("两个数字相加结果:"+bdm.add(-7.5, 8.9));
     		System.out.println("两个数字相减结果:"+bdm.sub(-7.5, 8.9));
     		System.out.println("两个数字相乘结果:"+bdm.mul(-7.5, 8.9));
     		System.out.println("两个数字相除结果,结果小数后保留10位:"+bdm.div(10, 2));
     		System.out.println("两个数字相除结果,结果小数后保留5位:"+bdm.div(-7.5, 8.9, 5));
     	}
     }
     //执行结果
     两个数字相加结果:1.4
     两个数字相减结果:-16.4
     两个数字相乘结果:-66.75
     两个数字相除结果,结果小数后保留10位:5.0000000000
     两个数字相除结果,结果小数后保留5位:-0.84270
    

22.6 作业

  1. 猜数字(提示:产生随机数 Math.random()*(上限-下限+1)+下限):编写程序Guess,随机地产生一个整数,表示从A到Z的字母。之后,通过命令行参数读入一个整数,试图猜出随机产生的字母。无论猜得是否正确,都打印出相应的信息。另外,如果猜对了,程序退出。
  2. 利用Random类,随机生成一个int 随机数,long随机数,float随机数,double随机数,高斯随机数, 并在屏幕上随机打印.
  3. 使用Random类模拟摇色子游戏.共5粒色子,分别显示出5粒色子的点数,和加起来一共是多少点.打印输出.
  4. 模拟张新发扫码得红包系统(使用随机数与格式化小数实现):
    • 没中奖 30%
    • 中奖 0.1-1块钱 20%
    • 中奖 1-3块钱 20%
    • 中奖 3-10块钱 10%
    • 中奖 10-18块钱 5%
    • 中奖 18-28块钱 5%
    • 中奖 28-38块钱 5%
    • 中奖 38-58块钱 3%
    • 中奖 88块钱 1%
      生随机数 Math.random()*(上限-下限+1)+下限):编写程序Guess,随机地产生一个整数,表示从A到Z的字母。之后,通过命令行参数读入一个整数,试图猜出随机产生的字母。无论猜得是否正确,都打印出相应的信息。另外,如果猜对了,程序退出。
  5. 利用Random类,随机生成一个int 随机数,long随机数,float随机数,double随机数,高斯随机数, 并在屏幕上随机打印.
  6. 使用Random类模拟摇色子游戏.共5粒色子,分别显示出5粒色子的点数,和加起来一共是多少点.打印输出.
  7. 模拟张新发扫码得红包系统(使用随机数与格式化小数实现):
    • 没中奖 30%
    • 中奖 0.1-1块钱 20%
    • 中奖 1-3块钱 20%
    • 中奖 3-10块钱 10%
    • 中奖 10-18块钱 5%
    • 中奖 18-28块钱 5%
    • 中奖 28-38块钱 5%
    • 中奖 38-58块钱 3%
    • 中奖 88块钱 1%
    • 中奖 188块钱 0.1%
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
/** * @project: WebProjectUtil * @class: NumberUtil * @describe: 此工具用来处理数字方面的逻辑, * 如返回指定位数的随机数字、Double的加减乘除精确运算、指定位数数字用“0”补齐 * @autho: Administrator * @date: 2013-6-7 下午02:26:27 * @alter: Administrator * @alterDate: 2013-6-7 下午02:26:27 * @alterRemark: * @version V1.0 */ public class NumberUtil { private static final int DEF_DIV_SCALE = 2; /** * @return 返回12位随机数 */ public static String randomNumber() { } /** * @param parm * @return 返回指定位数随机数 */ public static String randomNumber(int parm) { } /** * * 两个Double数相加 * * @param v1 * @param v2 * @return Double */ public static Double add(Double v1, Double v2) { } /** * * 两个Double数相减 * * @param v1 * @param v2 * @return Double */ public static Double sub(Double v1, Double v2) { } /** * * 两个Double数相乘 * * @param v1 * @param v2 * @return Double */ public static Double mul(Double v1, Double v2) { } /** * * 两个Double数相除 * * @param v1 * @param v2 * @return Double */ public static Double div(Double v1, Double v2) { } /** * * 两个Double数相除,并保留scale位小数 * * @param v1 * @param v2 * @param scale * @return Double */ public static Double div(Double v1, Double v2, int scale) { } /** * 返回指定Double的负数 * @param v1 * @return */ public static Double neg(Double v1) { /** * @Title: toFixdLengthString * @Description: 将字符串用符号填充位数 * @param str 源字符串 * @param fixdlenth 位数 * @return String * @throws */ public static String toFixdLengthString(String str, int fixdlenth) { } /** * @Title: toFixdLengthString * @Description: 将数字用“0”填充位数 * @param num * @param fixdlenth * @return String * @throws */ public static String toFixdLengthString(int num, int fixdlenth) { } /** * @Title: generateSpaceString * @Description: 得到指定位数占位符 * @param length * @return String * @throws */ public static String generateSpaceString(int length) { } /** * @Title: generateZeroString * @Description: 得到指定位数的“0”的占位符 * @param length * @return String * @throws */ public static String generateZeroString(int length) { } }

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值