Java学习路线-18:数字操作类Math、Random、BigInteger、BigDecimal
【摘要】 第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)