Java大数据之路--Math类、日期类

本文介绍了Java中数学运算和日期处理的基本方法,包括Math类的常用数学运算、BigDecimal和BigInteger的大数运算、DecimalFormat的数值格式化,以及Date和Calendar类的日期操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

  • Math


最终类,提供了基本的数学运算,提供了大量静态方法

​
        //求平均值
        System.out.println(Math.abs(-1));
        //求第一个参数的第二个参数的次幂(次幂可以是小数)
        System.out.println(Math.pow(2,0.5));
        //向上取整
        System.out.println(Math.ceil(2.45));
        //向下取整
        System.out.println(Math.floor(2.56));
        //四舍五入,结果是整数
        System.out.println(Math.round(3.54));

​

BigDecimal----用于精确运算的类,参数需要是字符串

public class BigDecimalDemo {
    //strictfp只能加到方法上
    //在底层进行运算时可以把处理的位数提高到80位,最后存储还是64位
    public strictfp static void main(String[] args) {
        //底层要转成二进制补码,大部分小数的二进制补码是无限位数,但是存储的位数是固定的就不能精确运算。
        double d = 2.1-1.98;
        //参数是字符串才能做精确运算
        BigDecimal bd1 = new BigDecimal("2.1");
        BigDecimal bd2 = new BigDecimal("1.98");
        System.out.println(bd1.subtract(bd2));
    }
}

BigInteger------用于超大数运算 

import java.math.BigInteger;
public class BigIntegerDemo {
    public static void main(String[] args) {
        //超大数之间的运算
        BigInteger in = new BigInteger("454354353483250289504769048239042386847238472397239418795374982379836798375");
        BigInteger in1 = new BigInteger("4325082390582680948230942839504590462095823523587234672386532734972349823753429857");
        System.out.println(in.multiply(in1));
    }
}

DecimalFormat-------进行格式化(使用占位符)

public class DecimalFormatDemo {
    public static void main(String[] args) {
        double d = 2.324;
        //保留两位小数
        //0----占位符 0是占位符,如果这个位上有值,就把值展示出来,没值就展示0,不只是0另外数也可以
        //#----占位符 如果这个位上有值就把值展示出来,没值就不展示
        DecimalFormat df1= new DecimalFormat("#.########");
        String s = df1.format(d);
        System.out.println(s);
    }
}

 


  • 日期(Date\calendar)


  • Date 

用SimpleDateFormat 去操作日期和字符串可以互相转换(字符串转日期 parse()  日期转字符串format())

public class DateDemo {
    public static void main(String[] args) throws ParseException {
        //Tue Jul 16 16:42:08 CST 2019  CST---中国标准时区-----上海时间
        //得到的就是当前的日期和时间
        //指定具体的时间是会加上1900年1月
        //警告压制
        //方法名上有黑线---过时的-----在未来的版本中不支持
        // @SuppressWarnings("deprecation")
        // Date date = new Date(2008-1900,8-1,8);
        // System.out.println(date);
        //字符串转日期
        String str="2012-12-12 12:12:12";//1911/1/1
        //指定日期转换的格式
        SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date d = sd.parse(str);
        //ParseException: Unparseable date不能解析的日期
        //日期转字符串
        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
        System.out.println(sdf1.format(d));
    }
}
  • calendar日历类
public class CalendarDemo {
    public static void main(String[] args) {
        Calendar c = Calendar.getInstance();
        System.out.println(c);//输出内容如下 格里高利历
        /*
        java.util.GregorianCalendar[time=1563268843263,areFieldsSet=true,areAllFie
        ldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offs
        et=28800000,dstSavings=0,useDaylight=false,transitions=29,lastRule=null],firstDayOfWeek=
        1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2019,MONTH=6,WEEK_OF_YEAR=29,WEEK_OF_MONTH=3,DAY_OF_MON
        TH=16,DAY_OF_YEAR=197,DAY_OF_WEEK=3,DAY_OF_WEEK_IN_MONTH=3,AM_PM=1,HOUR=5,HOUR_OF_DAY=17,MINU
        TE=20,SECOND=43,MILLISECOND=263,ZONE_OFFSET=28800000,DST_OFFSET=0]
        * */
        //得到日历类里的具体的信息
        Date date = new Date(2012-1900,12-1,12);
        c.setTime(date);
        //一个月中的第几天
        System.out.println(c.get(Calendar.DAY_OF_MONTH));
    }
}
  • calendar日历类
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
public class LocalDateDemo {
    public static void main(String[] args) {
        //
        LocalDate l =LocalDate.now();
        //表示加一个月
        System.out.println(l.plus(1, ChronoUnit.MONTHS));
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值