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

C#中未特殊声明时整数除法结果不符预期?两种写法为何有差异?

为什么C#里小整数除以大整数得不到预期浮点结果?

这其实是C#的运算类型规则在起作用,我给你拆解清楚:

  • 第一种情况:float a = 2 / 4;
    这里的2和4都是默认的int(整数)类型,C#会优先执行整数除法——这种除法的规则是直接舍弃小数部分,只保留商的整数部分。所以2 / 4的计算结果是整数0,之后再把这个0转换成float类型赋值给a,最终结果自然是0。

  • 第二种情况:float a = 2; float b = 4; float c = a / b;
    这里的a和b都被声明为float(浮点型),此时C#会执行浮点除法,这种除法会保留小数部分进行精确计算,所以2.0 / 4.0的结果就是0.5,赋值给c后就能得到你预期的结果。

如果你想在一行代码里直接得到浮点结果,也可以通过强制转换其中一个操作数为浮点型来触发浮点除法,比如:

float a = (float)2 / 4; // 结果为0.5
// 或者用后缀f标记浮点字面量
float a = 2f / 4; // 同样得到0.5

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 20:08:17