gpt4 book ai didi

c - pow() 函数给出错误答案

转载 作者:太空宇宙 更新时间:2023-11-04 07:46:31 25 4
gpt4 key购买 nike

<分区>

我正在尝试将 2、3 位数字相乘。我使用了 2 个 for 循环(嵌套)并将 num1 的每个数字与 num2 相乘,并使用 pow() 将每个结果转移到适当的位置。所以问题是 pow(10,3) 的结果是 299 而不是 300。

我没有尝试太多,但使用 printf 来查找运行时中实际发生的事情,这就是我所发现的。shift 后 tempR 的值应该是
5,40,300,100,800,6000,1500,12000,90000
但即将到来
5,40,299,100,799,6000,1500,12000,89999

int main(void)
{
int result; // final result
int tempR; // temporary for each iteration
char a[] = "345"; // number 1
char b[] = "321"; // number 2
for(int i = 2;i>= 0 ; i --)
{
for(int j = 2;j >= 0 ; j --)
{
int shift = abs(i-2 + j -2);
printf("%d\n",shift); //used to see the values of shift.
//and it is coming as expected
tempR = (int)(b[i] - '0') * (int)(a[j] - '0');
printf("%d \n",tempR); // value to tempR is perfect
tempR = tempR*pow(10,shift);
printf("%d \n",tempR); // here the problem starts
result += tempR;
}
}

printf("%d",result);
}

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