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

为什么C#中4/3与4.0/3.0的计算结果不一致?

为什么C#中4/3和4.0/3.0的计算结果不同?

先看你给出的正确计算球体体积的代码:

public static double CalculateBallVolume(double aRadius)
{
    double volume = (4.0 / 3.0) * Math.PI * Math.Pow(aRadius,3);
    return volume;
}

当你把(4.0 / 3.0)换成(4 / 3)后结果出错,核心原因是C#里整数除法和浮点数除法的规则完全不同:

  • 当除法操作的两个操作数都是整数类型(比如4和3都是int)时,C#会执行整数除法——它会直接舍弃计算结果的小数部分,只保留整数商。所以4 / 3的结果不是你预期的1.333...,而是1。
  • 当操作数是浮点数类型(比如4.0和3.0都是double)时,C#会执行浮点数除法,这时候会完整保留小数部分,计算结果是1.3333333333333333,这才符合球体体积公式里的系数要求。

举个直观的例子:

int intDivision = 4 / 3; // 结果是1
double floatDivision = 4.0 / 3.0; // 结果是1.3333333333333333

回到你的球体体积计算,用4/3的话,公式实际上变成了1 * Math.PI * Math.Pow(aRadius,3),和正确的(4/3)πr³差了三分之一,自然结果就不对了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 18:50:29