我想知道,因为当我在检查模式下运行我的代码时,似乎存在一些差异。例如:
List<List> getFactors(int n)
{
List<List> factors = [[1, n]];
double top = pow(n,1/2);
int test = 2;
while (test <= top)
{
if (n % test == 0)
factors.add([test, n ~/ test]);
test++;
}
return factors;
}
按原样工作,但是当我将其更改为时pow(n,1/2)
,n.pow(1/2)
它会在检查模式下返回错误。唯一的解决方法是将类型更改为n
双精度。为什么是这样?也很高兴知道两者之间的一般差异。谢谢!