为了账号安全,请及时绑定邮箱和手机立即绑定

除法1/n总是返回0.0

除法1/n总是返回0.0

C++ C
ibeautiful 2019-07-13 16:11:12
我在计算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;}
查看完整描述

3 回答

?
蛊毒传说

TA贡献1895条经验 获得超3个赞

(1/i)

iint,所以这是整数除法,结果是0如果i > 1..使用1.0/i得到浮点除


查看完整回答
反对 回复 2019-07-13
?
慕容3067478

TA贡献1773条经验 获得超3个赞

1是整数,i是个整数。所以1/i将是一个整数,结果将被截断。若要执行浮点除法,操作数之一应为类型。float(或者,更好的是,类型)double):

p3 *= 1. / i;


查看完整回答
反对 回复 2019-07-13
?
PIPIONE

TA贡献1829条经验 获得超9个赞

我也有过同样的问题。基本情况:

  • 当您想要从两个整数获得浮点数输出时,需要将其中一个转换为浮点数。

    int c = 15; int b = 8; printf("result is float %f\n", c / (float) b); // result is float 1.875000 printf("result is float %f\n", (float) c /  b); // result is float 1.875000


查看完整回答
反对 回复 2019-07-13
  • 3 回答
  • 0 关注
  • 472 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信