0
点赞
收藏
分享

微信扫一扫

【社区投稿】给Rust的Struct自动实现trait

左小米z 2024-02-20 阅读 25

目录

位运算

奇数转为1,偶数转为0

System.out.println(3&1); // 1
System.out.println(4&1); // 0

数字分隔符_

java7之后允许用下划线分隔数字。例如1_000_000是能正常解析的(当然系统里存的还是数字,只是方便程序员查看。print也是不带下划线的形式)。

数字与字符转换

(char)('a'+12)
// ch-'a'为数字

随机数

Math.random方法:返回[0.0, 1.0)的double数值,借助转换可以获得随机整数。

int max = 1000;
int min = 1;
int ran1;
for (int i = 0; i < 5; i++) {
	ran1 = (int)(Math.random() * (max-min) + min);
	System.out.println(ran1);
}

java.util.Random类:

new Random()设定seed,nextInt()限制数字的范围。如果seed和范围一致,那么两次产生的随机数就是一样的。但是如果不指定seed(使用一个和当前系统时间对应的数字作为seed),那么两次产生的随机数还是会不同的。

Random类提供的所有方法生成的随机数字都是分布均匀的。

Random r = new Random(1);
int ran1;
for (int i = 0; i < 5; i++) {
	ran1 = r.nextInt(100);
	System.out.println(ran1);
}

除了生成int外,还可以
nextLong()	
nextBoolean()	true/false
nextDouble()	[0, 1.0)
nextFloat()
nextInt(int n)	[0, n) 如果不指定n, [-2^31, 2^31-1)
setSeed(long seed)	相当于重新new了一个Random对象

数字格式化

十进制数字格式化:java.text.DecimalFormat

0	显示数字,位数不够补0

double pi = Math.PI;
//取一位整数 
System.out.println(new DecimalFormat("0").format(pi)); // 3
        //取一位整数和两位小数 
System.out.println(new DecimalFormat("0.00").format(pi)); // 3.14
//取两位整数和三位小数,整数不足部分以0填补。 
System.out.println(new DecimalFormat("00.000").format(pi)); // 03.142
//取所有整数部分 
System.out.println(new DecimalFormat("#").format(pi)); // 3
//以百分比方式计数,并取两位小数 
System.out.println(new DecimalFormat("#.##%").format(pi));  // 314.16%
//显示为科学计数法,并取五位小数 
System.out.println(new DecimalFormat("#.#####E0").format(pi)); // 3.14159E0
//显示为两位整数的科学计数法,并取四位小数 
System.out.println(new DecimalFormat("00.####E0").format(pi)); // 31.4159E-1
//每三位以逗号进行分隔。 
System.out.println(new DecimalFormat(",###\u00A4").format(12345678)); // 12,345,678¥
//将格式嵌入文本 
System.out.println(new DecimalFormat("Π大小为 #.#####E0 。").format(pi)); // Π大小为 3.14159E0 。

Math常用方法

static double exp(double a) 求e^a
static double pow(double a, double b) 求a^b
sqrt 平方根 cbrt 立方根
static double log(double a) 求ln a
static double log10(double a) 求log10 a

在这里插入图片描述

double a = Math.rint(-4.5);
System.out.println(a); // -4

// round 实际是 Math.floor(x+0.5)
int a = (int) Math.round(-11.5);
System.out.println(a); // -11
int b = (int) Math.round(-11.6);
System.out.println(b); // -12

大数字BigInteger和BigDecimal

BigInteger

注意这是个类,所以用 . 的方法使用函数
在这里插入图片描述

import java.math.BigInteger;

Scanner input = new Scanner(System.in);
// 从控制台获取用户输入
int num = input.nextInt();
// 初始化BigInteger实例,用String初始化
BigInteger bi = new BigInteger(num + "");
//计算大数字除以3的商
System.out.println("取商操作结果:"+bi.divideAndRemainder(new BigInteger("3"))[0]);

BigDecimal

BigDecimal(double val) // constructor
BigDecimal(String val) // constructor
BigDecimal add(BigDecimal augend)    //加法操作
BigDecimal subtract(BigDecimal subtrahend)    //减法操作
BigDecimal multiply(BigDecimal multiplieand)    //乘法操作
BigDecimal divide(BigDecimal divisor,int scale,int roundingMode )    //除法操作

其中除法的scale是商的小数点后的位数,roundingMode是近似值处理模式
BigDecimal.ROUND_UP	商的最后一位如果大于 0,则向前进位,正负数都如此
BigDecimal.ROUND_DOWN	商的最后一位无论是什么数字都省略
BigDecimal.ROUND_CEILING	商如果是正数,按照 ROUND_UP 模式处理;如果是负数,按照 ROUND_DOWN模式处理
BigDecimal.ROUND_FLOOR	与 ROUND_CELING 模式相反,商如果是正数,按照 ROUND_DOWN 模式处理;如果是负数,按照 ROUND_UP 模式处理
BigDecimal.ROUND_HALF_ DOWN	对商进行五舍六入操作。如果商最后一位小于等于 5,则做舍弃操作,否则对最后一位进行进位操作
BigDecimal.ROUND_HALF_UP	对商进行四舍五入操作。如果商最后一位小于 5,则做舍弃操作,否则对最后一位进行进位操作
BigDecimal.ROUND_HALF_EVEN	如果商的倒数第二位是奇数,则按照 ROUND_HALF_UP 处理;如果是偶数,则按照 ROUND_HALF_DOWN 处理

import java.math.BigDecimal;
BigDecimal bd = new BigDecimal(num);
//计算大数字除以3.14的商
System.out.println("取商操作结果:"+bd.divide(new BigDecimal(3.14), 2, BigDecimal.ROUND_CEILING));
举报

相关推荐

0 条评论