java数学_Java数学

1. math

package com.qf.demo02;

public class Test2Math {

public static void main(String[] args) {

System.out.println(Math.PI);//圆周率,3.141592653589793

System.out.println(Math.abs(100));//绝对值

System.out.println(Math.abs(-100));

//向上取整

System.out.println(Math.ceil(3.00001));//返回大于或等于参数的最小(最接近负无穷大) double值,等于一个数学整数。

//向下取整

System.out.println(Math.floor(4.1));

//四舍五入

System.out.println(Math.round(3.49));

double num = 3.4;

System.out.println(Math.floor(num + 0.5));//效果是四舍五入吗?

System.out.println(Math.pow(2, 3));//a的b次方

System.out.println(Math.pow(3, 2));

System.out.println(Math.sqrt(9));//根号9-->3

System.out.println(Math.sqrt(8));//根号8-->2倍根号2

//System.out.println(Math.random());//随机数,取值范围:[0,1),随机小数

//偷偷的看了一下Math.random()的源代码,发现就是new Random对象,调用nextDouble()方法。

/*

* 需求:int

*

*

* [0,1) * 100

* --->[0,100) [0,99.999999999]

* 直接取整数部分:(int)-->[0,99]

*

*

* 取[0,100]的随机数

* -->取[0,100.9889988)

* -->[0,1)*101-->[0,101)

* 100.99999999999

* -->(int)-->[0,100]

*

*

* 取[0,10]的随机数

* -->取[0,10.999999]

* -->[0,1)*11 -->[0,11)

* 10.9999999

* -->(int)-->[0,10]

*

* 取[5,15]的随机数

* --->[0,10]+5--->[5,15]

* --->[0,1)*11--->[0,11)

* 10.9999999

* --->(int)--->[0,10]

*

* 取[3,14]的随机数

* --->[0,11]+3

* --->[0,1)*12 --->[0,12)

* 11.999999

* --->(int)-->[0,11]

*

* 取[m,n]之间的随机整数

* -->[0,n-m] + m

*

* (int)(Math.random()*(n-m+1)+m);//获取[m,n]之间的随机整数的公式

*/

double d1 = Math.random();//[0,1)

double d2 = d1 * 100;//乘以100后的取值范围?[0,100)

int i1 = (int)d2;//[0,99]

int i2 = i1 + 3;//[3,102]

System.out.println((int)(Math.random()*100+3));

System.out.println((int)(Math.random()*101));//[0,100]

System.out.println((int)(Math.random()*11));//[0,10]

System.out.println((int)(Math.random()*11+5));

System.out.println((int)(Math.random()*12+3));

}

}

2. random

package com.qf.demo02;

import java.util.Random;

public class Test3Random {

public static void main(String[] args) {

//step1:创建Random类的对象

Random r1 = new Random();

//step2:通过r1调用方法,就能够生成各种各样的随机数

boolean b1 = r1.nextBoolean();//产生一个boolean类型的随机数

System.out.println(b1);

double d1 = r1.nextDouble();//产生一个随机double类型,取值范围:[0,1)

System.out.println(d1);

int i1 = r1.nextInt();//产生一个int类型的随机数

System.out.println(i1);

int i2 = r1.nextInt(3);//产生一个int类型的随机数:[0,3)

System.out.println(i2);

Random r2 = new Random(10);

Random r3 = new Random(10);

System.out.println("-->"+r2.nextInt());

System.out.println("-->"+r3.nextInt());

}

}

3. BigDecimal

package com.qf.demo02;

import java.math.BigDecimal;

public class Test4BigDecimal {

public static void main(String[] args) {

double d1 = 0.05;

double d2 = 0.01;

System.out.println(d1+d2);

System.out.println(1.0-0.9);

System.out.println(0.1+0.2);

System.out.println(1.5+0.3);

System.out.println("------------------");

//BigDecimal,构造BigDecimal对象时候,如果直接使用double类型作为参数,存在精度

//BigDecimal bd1 =new BigDecimal(0.05); //0.05000000000000000277555756156289135105907917022705078125

//BigDecimal bd2 = new BigDecimal(0.01); //0.01000000000000000020816681711721685132943093776702880859375

//System.out.println(bd1);//重写了toString(),显示存储的数值

//System.out.println(bd2);

BigDecimal bd3 = new BigDecimal("0.05");

BigDecimal bd4 = new BigDecimal("0.01");

System.out.println(bd3);

System.out.println(bd4);

//加法

BigDecimal res1 = bd3.add(bd4);//d1+d2--->d1.add(d2)

System.out.println(res1);

//减法

BigDecimal res2 = bd3.subtract(bd4);

System.out.println(res2);

//乘法

BigDecimal res3 = bd3.multiply(bd4);

System.out.println(res3);

BigDecimal bd5 = new BigDecimal("10");

BigDecimal bd6 = new BigDecimal("3");

//除不尽的情况,必须明确2个信息:(小数点后保留几位,是否使用四舍五入)

//BigDecimal res4 = bd5.divide(bd6);

BigDecimal res5 = bd5.divide(bd6, 2, BigDecimal.ROUND_HALF_UP);

System.out.println(res5);

}

}

4. date

package com.qf.demo01;

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Date;

public class Test2SimpleDateFormat {

public static void main(String[] args) throws ParseException {

Date date = new Date();

System.out.println(date);//Thu Apr 16 11:00:36 IRKT 2020

/*

* "2020-04-16"-->"yyyy-MM-dd"

* 2020/04/16 --> "yyyy/MM/dd"

* 2020年04月16日:"yyyy年MM月dd日"

* 2020-04-16 11:01:33-->"yyyy-MM-dd HH:mm:ss"

* ....

*/

/*

* SimpleDateFormat类:

* Date-->String:日期格式化?就是将一个日期Date对象,按照指定的字符串格式去显示。

* format(),根据模板,将date日期,转为String字符串类型

* 1.创建SimpleDateFormat对象。可以通过构造方法指定模板(格式):"yyyy-MM-dd"

* 如果没有指定模板,使用系统默认:20-4-16 上午11:09

* 2.sdf.format(date)-->String

*

*

* String-->Date:解析?就是将一个文本字符串,解析成一个Date对象。

* parse(),根据模板,将字符串解析为对应的日期对象,异常。

* 1.同上

* 2.sdf.parse(String)-->date

*/

//step1:创建格式化对象:

SimpleDateFormat sdf = new SimpleDateFormat();//默认格式:yy-M-dd

//step2:调用format方法,将date--->String

String s1 = sdf.format(date);

System.out.println(s1);//20-4-16 上午11:09

SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss.SSS");

String s2 = sdf2.format(date);

System.out.println(s2);//2020年04月16日 11:22:01.640

//String类型的表示日期的数据--->Date对象

String src = "2020-05-22";

SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd");

Date date2 = sdf3.parse(src);//会按照sdf对应的模板来进行格式化

System.out.println(date2);

}

}

package com.qf.demo01;

import java.util.Calendar;

import java.util.GregorianCalendar;

public class Test3Calendar {

public static void main(String[] args) {

//step1:创建Calendar类的对象

Calendar calendar = new GregorianCalendar();

//step2:获取所需要的数据

/*

* 语法:calendar.get(XXX);

* year-->年

* month-->月,+1

* dayofmonth-->日期

* hourofday-->小时

* ....

*/

System.out.println("YEAR: " + calendar.get(Calendar.YEAR));

System.out.println("MONTH: " + (calendar.get(Calendar.MONTH)+1));

System.out.println("DAY_OF_MONTH: " + calendar.get(Calendar.DAY_OF_MONTH));

System.out.println("DAY_OF_WEEK: " + calendar.get(Calendar.DAY_OF_WEEK));

//System.out.println("AM_PM: " + calendar.get(Calendar.AM_PM));//0上午am,1下午pm

//System.out.println("HOUR: " + calendar.get(Calendar.HOUR));//12小时制。

System.out.println("HOUR_OF_DAY: " + calendar.get(Calendar.HOUR_OF_DAY));//24小时制

System.out.println("MINUTE: " + calendar.get(Calendar.MINUTE));

System.out.println("SECOND: " + calendar.get(Calendar.SECOND));

System.out.println("MILLISECOND: " + calendar.get(Calendar.MILLISECOND));

/*

* 通过Calendar类,可以直接获取年,月,日,时,分,秒。。。。

* Date类:

* 思考题:通过Calendar类的对象,获取当前的年月日时分秒:拼接成一个字符串:

* 2020年04月16日 11:52:33

*/

String date = calendar.get(Calendar.YEAR)+"年"+(calendar.get(Calendar.MONTH)+1)+"月"+calendar.get(Calendar.DAY_OF_MONTH)+"日";

String time = calendar.get(Calendar.HOUR_OF_DAY)+":"+calendar.get(Calendar.MINUTE)+":"+calendar.get(Calendar.SECOND);

System.out.println(date);

System.out.println(time);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值