编写一个递归的静态方法计算ln(N!)的值,当n取4的时候,和Math.log(24)的值不同

在算法第四版做练习时 习题1.1.20

public class Test2 {
    public static void main(String[] args) {
        double result = Math.log(24);
        System.out.println(Cal(4) + "  " + result+"?"+(Cal(4)==result));
    }
    /*
    习题1.1.20
    编写一个递归的静态方法计算ln(N!)的值
     */
    public static double Cal(int n) {
        if (n == 1) return 0;
        return Math.log(n) + Cal(n - 1);
    }
}
结果输出为:
3.1780538303479453      3.1780538303479458

我看到小数点最后一位是不同的,有些不解,按理说,递归展开后是同样的计算过程才对..

我将参数改为5,6试了一下,发现虽然输出台的结果相同了,但是用==符号是false

初学者,恳求各位大佬解惑....

你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答

本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。

​​​​因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。