You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

毕达哥拉斯三元组代码中if(c == (int)c)判断的作用是什么?

if(c == (int)c)判断语句的工作原理

这段代码的逻辑是遍历1~30的正整数a、b作为直角边,计算斜边c的取值,筛选出符合要求的毕达哥拉斯三元组(三个边长均为正整数)输出,该if语句是核心筛选逻辑,工作原理如下:

  • 变量c是float类型,存储sqrt(a*a + b*b)的计算结果,也就是直角三角形斜边的长度。
  • (int)c是C语言的强制类型转换操作,作用是直接截断浮点数c的小数部分,只保留整数部分返回整数值。比如c = 5.0时(int)c结果为5,c=5.6时(int)c结果为5,c=4.999时(int)c结果为4。
  • 判断c == (int)c时,运算符两边类型不同,右侧的int类型值会被隐式转换为float类型再做相等比较:
    • 如果c本身就是整数(比如5.0),(int)c得到的5隐式转float为5.0,和原c相等,条件成立,说明当前a、b对应的斜边是整数,属于毕达哥拉斯三元组,可以输出。
    • 如果c不是整数(比如5.2),(int)c得到的5隐式转float为5.0,和原c不相等,条件不成立,直接跳过。

补充说明:该判断本质是校验浮点数c是否为整数值,不过实现存在浮点数精度风险,当a、b取值很大时,sqrt计算可能出现精度误差,比如本该是整数的结果被计算为5.0000001或者4.9999999,导致判断错误,但在本题a、b最大为30的小数值场景下不会出现问题。


内容的提问来源于stack exchange,提问作者bitcoder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 09:15:01