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

C#与Python基础数学计算结果差异原因咨询

为什么C#和Python基础数学计算结果不同?

先看你给出的两段代码:

Python代码

def test():
    l = 50
    r = 3
    gg= l + (r - l) / 2
    mid = l + (r - l) // 2
    print(mid)
    print(gg)

C#代码

public void test()
{
    var l = 50;
    var r = 3;
    var gg = l + (r - l) / 2;

    double x = l + (r - l) / 2;
    var mid = Math.Floor(x);
    Console.WriteLine(mid);
    Console.WriteLine(gg);
}

两者结果不同的核心原因是整数除法规则和类型处理的差异,具体拆解:

  1. 整数除法的取整逻辑不一样

    • Python的//是地板除法(向下取整):计算(r-l)//2时,r-l是3-50=-47,-47//2结果是-24(取比-23.5更小的整数),所以mid = 50 + (-24) = 26。
    • C#的整数除法/是向零取整:同样r-l=-47,-47/2结果是-23(直接截断小数部分,向0靠拢),后续x = 50 + (-23) = 27.0,Math.Floor(27.0)还是27,所以C#的mid是27。
  2. 浮点数/整数类型的隐式转换差异

    • Python中/除法不管操作数是不是整数,都会返回浮点数:(r-l)/2 = -47/2 = -23.5,所以gg = 50 + (-23.5) = 26.5。
    • C#中如果操作数都是整数,/执行整数除法,结果也是整数:(r-l)/2=-23,gg = 50 + (-23) = 27(此时gg的类型是int);即使后面把表达式转成double,也是基于整数除法的结果计算,所以x的值是27.0。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 06:01:07