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

​除法结果总是零

​除法结果总是零

C
UYOU 2019-06-27 15:49:29
我有这个C代码。#include <stdio.h>int main(void){         int n, d, i;         double t=0, k;         scanf("%d %d", &n, &d);         t = (1/100) * d;         k = n / 3;         printf("%.2lf\t%.2lf\n", t, k);         return 0;}我想知道为什么我的变量t‘总是零(在printf函数中)?
查看完整描述

3 回答

?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

因为在这个表达式中

t = (1/100) * d;

1和100是整数值,整数除法截断,所以这和下面的相同

t = (0) * d;

你需要像这样做一个浮动常量

t = (1.0/100.0) * d;

您也可能希望对此进行同样的处理。

k = n / 3.0;


查看完整回答
反对 回复 2019-06-27
?
慕森卡

TA贡献1806条经验 获得超8个赞

您使用的是整数除法,整数除法中的1/100总是舍入为零。

如果您想要进行浮点除法并简单地截断结果,则可以确保您使用的是浮动指针文本,并且d将被隐式转换:

t = (int)((1.0 / 100.0) * d);


查看完整回答
反对 回复 2019-06-27
?
波斯汪

TA贡献1811条经验 获得超4个赞

我想是因为

t = (1/100) * d;

1/100为整数除法=0

那么0*d总是等于0

如果你做了1.0/100.0,我认为它会正常工作


查看完整回答
反对 回复 2019-06-27
  • 3 回答
  • 0 关注
  • 448 浏览

添加回答

举报

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