作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
下面这段代码有什么问题吗?我正在尝试编写一个程序来计算一个数字的 n 次方根,但是我正在编写的计算的输出始终返回为 0。我只是将数字放入其中,看看是否会得到计算结果将其分配给 ans2,但只分配了 0。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void main(){
int n = 2;
double A = 4.0, ans = 1.0, ans2 = 1.0, pow = 1.0;
ans2 = (1/n)*((n-1)*ans+(A/pow));
printf("\n%lf\n", ans2);
printf("\n%lf\n", ans);
printf("\n%lf\n", pow);
printf("\n%lf\n", A);
printf("\n%d\n", n);
}
最佳答案
您必须:
ans2
方程写为 ans2 = (1.0/n)*((n-1.0)*ans+(A/pow));
n
声明为 double 型。按照您编写的方式,编译器会将 1/n
解释为有符号整数。在整数形式中,1
只是:
00000000000000000000000000000001
因此,当您将其除以任何正整数 n > 1
时,它会将最低有效位从末尾右移,导致结果被截断为 0。
关于c - 维基百科中计算数字的 n 次方根的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30563444/
我是一名优秀的程序员,十分优秀!