BigDecimalDemo 数学相关

package 数学相关类;

import java.math.BigDecimal;

public class BigDecimalDemo
{

        public static void main(String[] args)
        {
                // float和double都不能表示精确的小数,此时使用BigDecimal
                
                // TODO Auto-generated method stub
                System.out.println("0.09 + 0.01 ="+(0.09+0.01));
                System.out.println("1.00 - 0.33 ="+(1.00-0.33));
                
                // 
//                BigDecimal b1 = new BigDecimal(0.09);
//                BigDecimal b2 = new BigDecimal(0.01); 
//                // 0.1 ?
//                System.out.println(b1.add(b2)); 因为在0.09是double类型,创建b1就已经不精确了
                BigDecimal b1 = new BigDecimal("0.09");
                BigDecimal b2 = new BigDecimal("0.01"); 
                System.out.println(b1.add(b2));
                
                BigDecimal b3 = new BigDecimal("0.0123");
                System.out.println(b3.scale());// 4
                
                // 除法
                BigDecimal b4 = new BigDecimal("1.");
                BigDecimal b5 = new BigDecimal("3.00");
//                System.out.println(b4.divide(b5));// 如果是1.0 / 3.0 ,报异常java.lang.ArithmeticException
                
                //divide(b5,有效位数,舍入规则)
                System.out.println(b4.divide(b5,5,BigDecimal.ROUND_FLOOR));
                
//                b4.compareTo(b5) 比较   -1(b6<b7) 0 1(b6>b7)
                BigDecimal b6 = new BigDecimal("3.14");
                BigDecimal b7 = new BigDecimal("3.1450");
                System.out.println(b6.compareTo(b7));
                System.out.println(b6.equals(b7));
                
        }

}

public class MathDemo
{

        public static void main(String[] args)
        {
                // TODO Auto-generated method stub
//                static double E 
//        比任何其他值都更接近 e(即自然对数的底数)的 double 值。 
//static double PI 
//        比任何其他值都更接近 pi(即圆的周长与直径之比)的 double 值。
                
                System.out.println(Math.E);
                System.out.println(Math.PI);
                
                // abs 求绝对值
                System.out.println(Math.abs(-10.4));
                System.out.println(Math.abs(10.1));

                // 浮点数 -> 整数
                // 1. ceil 天花板
                System.out.println(Math.ceil(10.1));// 11
                System.out.println(Math.ceil(-10.1));// -10
                // 2. floor地板
                System.out.println(Math.floor(10.1));// 10
                System.out.println(Math.floor(-10.1));// -11
                // 3. 更靠近的整数
//                rint(double a) 
//        返回最接近参数并等于某一整数的 double 值。// 如果是.5 会取整数
                System.out.println(Math.rint(10.4));
                System.out.println(Math.rint(10.5));// -> 10
                System.out.println(Math.rint(11.5));// -> 12
                // 4. round四舍五入
                System.out.println(Math.round(10.4));
                System.out.println(Math.round(10.5));// -> 10
                System.out.println(Math.round(11.5));// -> 12
                
                // 作业:
                // 手机上一个打飞机游戏(屏幕大小:320*568,左上角为原点0,0)
                // 上方出现一个敌机(160,50)
                // 你的飞机坐标(200,500)
                // 敌机向你发射子弹,子弹速度100pt/s (如果向正下方发射 1s后到达160,150)
                // 计算发射后每帧的子弹路径点,直到集中你的飞机位置
                // (fps是30,每秒的帧数就是30帧,也就是,每秒钟屏幕要刷新30次,),一秒钟计算30次。时间间隔是1/30=0.033333
                // 子弹的起始位置:(160,50) ->  子弹的终止位置是:(200,500)
                
                
                
                
        }

}

此处评论已关闭