c - 问题是我最近做的一个算法问题,但我无法得到正确的答案
问题描述
给定以下代码段
int k = 12;
float a = 1.0/12;
if ( 1.0 / k == a )
printf("%d",0);
我希望条件为真,但它什么也没打印。
什么原因?好吧,也许我没有礼貌,我感到很抱歉,这是我第一次在这个网站上提问,我不知道会有人回答我,所以谢谢你纠正我,我会的下次做的更好,如果你有空,请你解决我的问题
解决方案
您看不到任何内容,因为条件结果为假。您的变量 a 是浮点数,而 if 子句中的 1.0/k 是双精度数。它们具有不同的精度,因此不相等。一般来说,比较浮动是否相等是个坏主意。
推荐阅读
- c# - 当用户输入是字符串并且它应该是 int.tryparse 的整数时,如何阻止 c# 崩溃?
- r - Purrr 包将物种名称添加到 SSDM 中的每个输出名称
- c# - 使用 IComparer 获取 DateTime 大于的索引
- twitter - 使用授权标头中的承载令牌将用户添加到自定义受众
- r - 我是在处理一个充满数字、因子、字符还是什么的表格?
- php - 如何解决 php 联系表单中的 hCaptcha 验证错误
- angular - ngClass 结合多个条件?
- c - 堆栈结构与堆结构有什么区别?
- sql - 如何组合和求和结果值直到列中的新值
- postgresql - PostgreSQL 通过 WHERE 查询数组中的嵌套对象