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

如何在ASP.NET Core 6 MVC中将卢比金额以英文单词形式显示?

在ASP.NET Core 6 MVC中将卢比金额转换为英文单词形式的实现方法

核心思路

通过创建C#工具类实现数字到英文单词的转换逻辑,之后在MVC的控制器或视图中调用该工具类,即可将卢比金额(整数或带小数的金额)转换为对应的英文单词形式。


1. 创建数字转英文单词的工具类

在项目中新建Helpers文件夹,添加NumberToWordsConverter.cs类,实现核心转换逻辑:

public static class NumberToWordsConverter
{
    private static readonly string[] Ones = { "", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen" };
    private static readonly string[] Tens = { "", "", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety" };

    // 处理整数金额转换
    public static string ConvertToWords(int number)
    {
        if (number == 0)
            return "zero";

        if (number < 0)
            return "minus " + ConvertToWords(Math.Abs(number));

        string words = "";

        // 适配印度计数系统(crore、lakh)
        if ((number / 10000000) > 0)
        {
            words += ConvertToWords(number / 10000000) + " crore ";
            number %= 10000000;
        }

        if ((number / 100000) > 0)
        {
            words += ConvertToWords(number / 100000) + " lakh ";
            number %= 100000;
        }

        if ((number / 1000) > 0)
        {
            words += ConvertToWords(number / 1000) + " thousand ";
            number %= 1000;
        }

        if ((number / 100) > 0)
        {
            words += ConvertToWords(number / 100) + " hundred ";
            number %= 100;
        }

        if (number > 0)
        {
            if (words != "")
                words += "and ";

            if (number < 20)
                words += Ones[number];
            else
            {
                words += Tens[number / 10];
                if ((number % 10) > 0)
                    words += "-" + Ones[number % 10];
            }
        }

        return words.Trim();
    }

    // 处理带小数的卢比金额(如1000.50)
    public static string ConvertCurrencyToWords(decimal amount)
    {
        int integerPart = (int)Math.Floor(amount);
        int decimalPart = (int)Math.Round((amount - integerPart) * 100);

        string words = ConvertToWords(integerPart) + " rupees";

        if (decimalPart > 0)
            words += " and " + ConvertToWords(decimalPart) + " paise";

        return words;
    }
}

注:代码默认适配印度计数体系(crore、lakh),如果需要通用国际计数逻辑(million、billion),可替换对应计数单位的判断代码。


2. 在ASP.NET Core 6 MVC中使用工具类

方式一:控制器处理后传递到视图

在控制器Action中调用工具类,将转换结果传给视图:

public IActionResult Index()
{
    int amount = 1000;
    string amountInWords = NumberToWordsConverter.ConvertToWords(amount);
    // 带小数场景示例:decimal amount = 1234.50m; string amountInWords = NumberToWordsConverter.ConvertCurrencyToWords(amount);
    ViewBag.AmountInWords = amountInWords;
    return View();
}

在Index.cshtml视图中展示结果:

<p>金额1000对应的英文单词:@ViewBag.AmountInWords</p>

方式二:直接在视图中调用工具类

在视图中直接引用工具类并调用方法:

@using YourProjectNamespace.Helpers

@{
    int amount = 1000;
    string words = NumberToWordsConverter.ConvertToWords(amount);
}

<p>转换结果:@words</p>

示例效果

  • 输入1000 → 输出one thousand
  • 输入12345 → 输出twelve thousand three hundred and forty-five
  • 输入100000 → 输出one lakh(印度计数逻辑)或one hundred thousand(国际计数逻辑)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 07:52:50