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

C#是否有内置函数实现数字转文字?如何获取最优转换方案?

内置函数相关说明

C# 没有原生内置的通用数字转英文文字表示的公共API。你可能会在特定命名空间下找到部分场景的转换方法,比如Microsoft.VisualBasic命名空间下的AmountToWords方法,但该方法是为金额转大写设计的,会自动补全货币相关后缀,无法满足你输入100输出Hundred的纯数字转换需求。

最优解决方案

下面提供两种常用实现方案,可根据自身需求调整:

  • 轻量实现(适配0~999范围,满足示例需求)
public static class NumberConverter
{
    // 基础单位映射
    private static readonly string[] Units = { "Zero", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen" };
    // 十位单位映射
    private static readonly string[] Tens = { "Zero", "Ten", "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety" };

    public static string ToWords(int number)
    {
        // 适配输入100直接返回Hundred的需求,可根据自身规则调整
        if (number == 100)
            return "Hundred";

        if (number == 0)
            return "Zero";

        if (number < 20)
            return Units[number];

        if (number < 100)
        {
            var result = Tens[number / 10];
            if (number % 10 > 0)
                result += " " + Units[number % 10];
            return result;
        }

        if (number < 1000)
        {
            var result = Units[number / 100] + " Hundred";
            if (number % 100 > 0)
                result += " and " + ToWords(number % 100);
            return result;
        }

        // 如需支持更大数字,可在此处扩展千、百万、十亿等单位逻辑
        throw new ArgumentOutOfRangeException(nameof(number), "当前实现默认支持0~999范围的数字转换");
    }
}

调用示例:输入NumberConverter.ToWords(100)即可直接输出Hundred,符合你的要求。

  • 全范围整数实现
    如果需要支持更大范围的数字转换,只需要在上述代码的基础上补充单位映射即可,常用单位包括:Thousand、Million、Billion、Trillion等,按位拆分数字后逐段转换拼接即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 10:06:04