gpt4 book ai didi

以 Integer.MIN_VALUE 作为指数的 Java pow 实现

转载 作者:行者123 更新时间:2023-11-30 04:34:34 24 4
gpt4 key购买 nike

我正在 Java 中实现一个 pow 函数,我想知道如何将 Integer.MIN_VALUE 作为指数处理?我们是否只是将其视为特殊情况?

因为我尝试将结果与标准 Java.lang.Math API 进行比较,但得到了几个不同的结果。以下是对比列表

//this will print "1.0 vs 0.0"
System.out.println(pow(2,Integer.MIN_VALUE) + " vs " + Math.pow(2,Integer.MIN_VALUE));

//this will print "1.0 vs 1.0"
System.out.println(pow(1,Integer.MIN_VALUE) + " vs " + Math.pow(1,Integer.MIN_VALUE));

public double pow(double base, int exp){
double result = 1.0;
boolean pos = false;

if(exp == 0) return result;
if(exp > 0){
pos = true;
exp *= -1;
}

while(exp > 0){
if((exp & 1) == 1){
result *= base;
}
base *= base;
exp /= 2;
}
if(!pos){
result = 1/result;
}
return result;
}

所以我想知道 Integer.MIN_VALUE 是否是一种特殊情况,我必须有一个 if 语句来检查它。

  if(exp == Integer.MIN_VALUE && base > 1) return 0.0;

最佳答案

基于这一行:

exp *= -1;

看来这可能是一个特殊情况。当然有一些方法可以在没有这种特殊情况的情况下实现这一点,但由于 -1 * Integer.MIN_VALUE 无法存储在 int 中,因此如果不单独处理它,就会出现错误。

关于以 Integer.MIN_VALUE 作为指数的 Java pow 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13810242/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com