java Math

package net.elaina.math;

public class Test1 {
    public static void main(String[] args) {
        //abs 获取参数绝对值
        //System.out.println(Math.abs(88));  //88
        //System.out.println(Math.abs(-88)); //88
        //bug:
        //以int类型为例,取值范围:-2147483648~2147483647
        //如果没有正数与负数对应,那么传递负数结果有误
        //-2147483648没有正数与之对应,所以abs结果产生bug
        //System.out.println(Math.abs(-2147483648)); //-2147483648
        //System.out.println(Math.absExact(-2147483648)); //报错

        //进一法,往数轴的正方向进一 ceil
        System.out.println(Math.ceil(12.34)); //13.0
        System.out.println(Math.ceil(12.54)); //13.0
        System.out.println(Math.ceil(-12.34)); //-12.0
        System.out.println(Math.ceil(-12.54)); //-12.0
        System.out.println("---------------------------------");

        //去尾法 round
        System.out.println(Math.round(12.34)); //12.0
        System.out.println(Math.floor(12.54)); //12.0
        System.out.println(Math.floor(-12.34)); //-13.0
        System.out.println(Math.floor(-12.54)); //-13.0
        System.out.println("---------------------------------");


        //四舍五入 round
        System.out.println(Math.round(12.34)); //12.0
        System.out.println(Math.round(12.54)); //13.0
        System.out.println(Math.round(-12.34)); //-12.0
        System.out.println(Math.round(-12.54)); //-13.0
        System.out.println("---------------------------------");


        //获取两个整数的较大值
        System.out.println(Math.max(20,30)); //30
        System.out.println(Math.min(20,30)); //20
        System.out.println("---------------------------------");

        //获取a的b次幂
        System.out.println(Math.pow(2,3)); //8.0
        //细节:
        //如果第二个参数 0~1之间的小数
        System.out.println(Math.pow(4,0.5)); // 2.0
        System.out.println(Math.pow(2,-2)); //0.25
        //建议:
        //第二个参数:一般传递大于等于1的正整数。
        System.out.println(Math.sqrt(4));  // 2.0 平方根
        System.out.println(Math.cbrt(8)); // 2.0 立方根
        System.out.println("---------------------------------");

        System.out.println(Math.random()); //随机数,[0.0,1.0]


    }
}

package net.elaina.math;

public class Test2 {
    public static void main(String[] args) {
        //要求1:统计一共有多少个水仙花数。
        //水仙花数:100~999

        //得到每一个三位数
        int count = 0;
        for (int i = 100; i <= 999; i++) {
            int ge = i % 10;
            int shi = i / 10 % 10;
            int bai = i / 100 % 10;

            //判断:
            //每一位的三次方之和跟本身 进行比较。
            double sum = Math.pow(ge,3) + Math.pow(shi,3) + Math.pow(bai,3);
            if(sum == i) {
                count++;
            }
        }
        System.out.println(count);

        // 判断一个数是否为质数
        System.out.println(isPrime(997));
    }

    public static boolean isPrime(int number) {
        int count = 0;
        for (int i = 2; i < Math.sqrt(number); i++) {
            count++;
            if(number % i == 0 ) {
                return false;
            }
        }
        System.out.println("循环的次数:" + count);
        return true;
    }
}
posted @ 2023-11-26 22:05  _Elaina  阅读(9)  评论(0)    收藏  举报