首页 > 解决方案 > 问题是我最近做的一个算法问题,但我无法得到正确的答案

问题描述

给定以下代码段

int k = 12;
float a = 1.0/12;
if ( 1.0 / k == a )
    printf("%d",0);

我希望条件为真,但它什么也没打印。

什么原因?好吧,也许我没有礼貌,我感到很抱歉,这是我第一次在这个网站上提问,我不知道会有人回答我,所以谢谢你纠正我,我会的下次做的更好,如果你有空,请你解决我的问题 在此处输入图像描述

以下是我的代码,当涉及到第二个示例时,它只打印五个等式 在此处输入图像描述

标签: calgorithm

解决方案


您看不到任何内容,因为条件结果为假。您的变量 a 是浮点数,而 if 子句中的 1.0/k 是双精度数。它们具有不同的精度,因此不相等。一般来说,比较浮动是否相等是个坏主意。


推荐阅读