Java 中基础库函数求次方pow()函数的使用

牛客网上的题目
math.pow(a,b)的接受类型不应该是double嘛,为什么这个long类型可以啊?我用double却结果不一样呢

public class Main {
    public static void main(String[] args) {

        //write your code here........
        
        long sum=0;
        for(int i=1;i<=10;i++){
            sum+=(Math.pow(10,i))-1;
           
        }
         System.out.println(sum);

    }
}

怎么个不一样?

对于 Java 中的 pow() 函数,它接受的两个参数都是 double 类型的,分别是底数和指数。在你的代码中,底数和指数都是 int 类型的,编译器会自动将它们转换为 double 类型,因此可以正常运行。但是,由于双精度浮点数无法精确表示某些数字,例如 0.2 无法被精确表示为 double 类型,因此可能会导致计算结果不准确。另外,你在代码中使用了 long 类型的变量 sum,计算结果会自动转换为 long 类型,与 double 类型可能存在差异。建议在使用 pow() 函数时,将底数和指数都明确指定为 double 类型,避免数据精度问题。