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

Double类型值未正确变更:净收入计算代码问题排查

问题分析与解决:净收入计算中的整数除法陷阱

你遇到的问题核心是整数除法导致的计算错误。

在C#中,当两个整数(10和100都是int类型)执行除法时,会触发整数除法规则——结果只保留整数部分,丢弃小数部分。因此10 / 100的计算结果不是你预期的0.1,而是0。这就导致你的计算式:

double netSalary = exessAmout - (10 / 100 * exessAmout);

等价于exessAmout - 0,最终结果和exessAmout完全一致,根本没有扣除税款。

修正方案

只需要把除法操作中的任意一个操作数改为浮点数,强制触发浮点运算即可,有几种可选方式:

  • 将10改为10.0(或100改为100.0):10.0 / 100
  • 直接使用小数常量0.1替代除法:0.1 * exessAmout
  • 显式指定数值类型为double:10d / 100

另外,你还可以简化计算逻辑,直接计算税后剩余比例(90%),代码更简洁:

修正后的完整代码

public double CalculateNetSalary(double grossSalary)
{
    if(grossSalary <= 1000)
    {
        return grossSalary;
    }

    double exessAmout = grossSalary - 1000;
    // 两种写法任选其一
    double netSalary = exessAmout - (10.0 / 100 * exessAmout);
    // double netSalary = exessAmout * 0.9;
    
    return netSalary + 1000;
}

验证输入3400的情况:

  • 超出部分3400-1000=2400
  • 税后剩余2400 * 0.9=2160
  • 最终净收入2160+1000=3160,完全符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 00:45:42