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

C#如何将API返回的整数金额转换为decimal/double格式实际金额

C# 整数金额转实际decimal金额实现方案

你拿到的整数本质是以分为单位的金额值,只需做除以100的精度处理即可实现转换,以下是两种常用实现方式:

方式1:直接算术运算(最简便)

用带m后缀的decimal字面量做除数,避免整数除法丢精度、浮点运算出误差的问题:

// api返回的整型金额(单位:分)
int apiReturnAmount = 90002;
// 转换为实际金额(单位:元)
decimal realAmount = apiReturnAmount / 100m;
// 如需固定两位小数的展示字符串,可直接格式化
string displayAmount = realAmount.ToString("0.00");

测试用例对应结果:

  • 输入850 → 输出8.50
  • 输入8500 → 输出85.00
  • 输入90002 → 输出900.02
  • 输入136789 → 输出1367.89

方式2:扩展方法封装(适合多场景复用)

如果项目中多处需要用到该转换逻辑,可以封装成通用扩展方法:

public static class AmountConvertExtension
{
    // 兼容int类型金额
    public static decimal ToActualAmount(this int centAmount)
    {
        return centAmount / 100m;
    }
    // 兼容大金额long类型
    public static decimal ToActualAmount(this long centAmount)
    {
        return centAmount / 100m;
    }
    // 直接返回两位小数的展示字符串
    public static string ToActualAmountString(this int centAmount)
    {
        return centAmount.ToActualAmount().ToString("0.00");
    }
}

// 调用示例
int amount = 136789;
decimal result = amount.ToActualAmount(); // 输出1367.89
string display = amount.ToActualAmountString(); // 输出"1367.89"

注意:禁止直接用100或者100.0做除数,前者会触发整数除法丢失小数位,后者是double类型运算,可能出现浮点精度误差。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 14:48:03