牛客网上的题目
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 类型,避免数据精度问题。