use*_*300 4 c floating-point integer floating-point-conversion
我正在尝试计算,p1=(1/1)*(1/2)*...*(1/n)但有些事情是错误的并且printf给了我0.000...0
#include <stdio.h>
int main(void) {
int i,num;
float p3;
do {
printf ("give number N>3 : \n" );
scanf( "%d", &num );
} while( num <= 3 );
i = 1;
p3 = 1;
do {
p3=p3*(1/i);
printf( "%f\n",p3 );
} while ( i <= num );
printf("\nP3=%f",p3);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
Dan*_*her 14
(1/i)
Run Code Online (Sandbox Code Playgroud)
i是一个int,所以是整数除法,结果是0 i > 1.使用1.0/i得到浮点除法.
1是一个整数,i是一个整数.所以1/i将是一个整数,即结果将被截断.要执行浮点除法,其中一个操作数应为类型float(或更好的类型double):
p3 *= 1. / i;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16313 次 |
| 最近记录: |