Java学习路线-18:数字操作类Math、Random、BigInteger、BigDecimal

举报
彭世瑜 发表于 2021/08/13 22:58:20 2021/08/13
【摘要】 第8 章 : 数字操作类 33 Math数学计算类 Math提供的方法都是static方法,都是基本数学公式 Math.abs(-10) // 10 Math.max(10, 1) // 10 Math.pow(10, 2) //100.0 Math.sqrt(9) //3.0 Math.round(10.4) // 10 Math.round(10.5) //...

第8 章 : 数字操作类

33 Math数学计算类

Math提供的方法都是static方法,都是基本数学公式


Math.abs(-10) // 10
Math.max(10, 1) // 10
Math.pow(10, 2) //100.0
Math.sqrt(9) //3.0
Math.round(10.4) // 10
Math.round(10.5) // 11

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

class MathUtil { private MathUtil() { } // 自定义保留位数 public static double round(double num, int scale) { return Math.round(num * Math.pow(10, scale)) / Math.pow(10, scale); }
}


class Demo { public static void main(String[] args) { System.out.println(MathUtil.round(10.98766, 2)); // 10.99 }
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

34 Random随机数生成类

import java.util.Random;

class Demo { public static void main(String[] args) { Random random = new Random(); // 产生随机数范围[0, 10) System.out.println(random.nextInt(10)); }
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

彩票号码生成示例

import java.util.Random;

/**
 * 随机示例
 * 36 选 7
 */
class Demo { public static int[] getCodeList(){ int[] data = new int[7]; int foot = 0; Random random = new Random(); while (foot<7){ int code = random.nextInt(37); if(isUse(code, data)){ data[foot++] = code; } } return data; } // 检查号码是否可以使用,不能为0,不能重复 public static boolean isUse(int code, int[] temp){ if(code == 0){ return false; } for(int x : temp){ if(code == x){ return false; } } return true; } public static void main(String[] args) { int[] data = getCodeList(); for(int x : data){ System.out.print(x + ", "); } // 15, 19, 9, 11, 33, 2, 21,  }
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45

35 大数字处理类

可以使用String保存,不过操作麻烦

继承体系

Object -Number -Integer -Byte -Long -Short -Float -Double -BigInteger -BigDecimal -Boolean -Character

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

BigInteger 和 BigDecimal使用方法基本相似

过大的数据也会影响程序性能,优先使用基础数据类型

减法运算


import java.math.BigInteger;

class Demo{ public static void main(String[] args) { BigInteger big1 = new BigInteger("98960973126687599871"); BigInteger big2 = new BigInteger("98960973126687599872"); System.out.println(big2.subtract(big1)); // 1 }
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

求余运算

import java.math.BigInteger;

class Demo{ public static void main(String[] args) { BigInteger big1 = new BigInteger("1001"); BigInteger big2 = new BigInteger("10"); BigInteger[] ret = big1.divideAndRemainder(big2); System.out.println(ret[0] + ", " +  ret[1]); // 100, 1 }
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

使用BigDecimal实现四舍五入进位

import java.math.BigDecimal;
import java.math.RoundingMode;

class MathUtil { private MathUtil() { } // 自定义保留位数 public static double round(double num, int scale) { return new BigDecimal(num).divide( new BigDecimal(1.0), scale, RoundingMode.HALF_UP).doubleValue(); }
}


class Demo { public static void main(String[] args) { System.out.println(MathUtil.round(10.98766, 2)); // 10.99 }
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

Math使用的是基本数据类型,性能高于大数据处理类

文章来源: pengshiyu.blog.csdn.net,作者:彭世瑜,版权归原作者所有,如需转载,请联系作者。

原文链接:pengshiyu.blog.csdn.net/article/details/103134228

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。