实现代码:
// 例如:(new Money(200)).ToString() == "贰佰元" namespace Skyiv.Util { using System.Text; class Test { static void Main() { for (;;) { System.Console.Write("金额: "); string s = System.Console.ReadLine(); decimal m; try { m = decimal.Parse(s); } catch { break; } System.Console.WriteLine("大写: " + new Money(m)); } } } // 该类重载的 ToString() 方法返回的是大写金额字符串 class Money { public string Yuan = "元"; // “元”,可以改为“圆”、“卢布”之类 public string Jiao = "角"; // “角”,可以改为“拾” public string Fen = "分"; // “分”,可以改为“美分”之类 static string Digit = "零壹贰叁肆伍陆柒捌玖"; // 大写数字 bool isAllZero = true; // 片段内是否全零 bool isPreZero = true; // 低一位数字是否是零 bool Overflow = false; // 溢出标志 long money100; // 金额*100,即以“分”为单位的金额 long value; // money100的绝对值 StringBuilder sb = new StringBuilder(); // 大写金额字符串,逆序 // 只读属性: "零元" public string ZeroString { get { return Digit[0] + Yuan; } } // 构造函数 public Money(decimal money) { try { money100 = (long)(money * 100m); } catch { Overflow = true; } if (money100 == long.MinValue) Overflow = true; } // 重载 ToString() 方法,返回大写金额字符串 public override string ToString() { if (Overflow) return "金额超出范围"; if (money100 == 0) return ZeroString; string[] Unit = { Yuan, "万", "亿", "万", "亿亿" }; value = System.Math.Abs(money100); ParseSection(true); for (int i = 0; i < Unit.Length && value > 0; i++) { if (isPreZero && !isAllZero) sb.Append(Digit[0]); if (i == 4 && sb.ToString().EndsWith(Unit[2])) sb.Remove(sb.Length - Unit[2].Length, Unit[2].Length); sb.Append(Unit[i]); ParseSection(false); if ((i % 2) == 1 && isAllZero) sb.Remove(sb.Length - Unit[i].Length, Unit[i].Length); } if (money100 < 0) sb.Append("负"); return Reverse(); } // 解析“片段”: “角分(2位)”或“万以内的一段(4位)” void ParseSection(bool isJiaoFen) { string[] Unit = isJiaoFen ? new string[] { Fen, Jiao }: new string[] { "", "拾", "佰", "仟" }; isAllZero = true; for (int i = 0; i < Unit.Length && value > 0; i++) { int d = (int)(value % 10); if (d != 0) { if (isPreZero && !isAllZero) sb.Append(Digit[0]); sb.AppendFormat("{0}{1}", Unit[i], Digit[d]); isAllZero = false; } isPreZero = (d == 0); value /= 10; } } // 反转字符串 string Reverse() { StringBuilder sbReversed = new StringBuilder(); for (int i = sb.Length - 1; i >= 0; i--) sbReversed.Append(sb[i]); return sbReversed.ToString(); } } }
本文向大家介绍JAVA实现数字大写金额转换的方法,包括了JAVA实现数字大写金额转换的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JAVA实现数字大写金额转换的方法。分享给大家供大家参考。具体如下: 例子:实现将阿拉伯数字的金额转换成中文大写金额的形式,例如: ¥1011 → 壹仟零壹拾壹元整。 大写数字为:零、壹、贰、叁、肆、伍、陆、柒、捌、玖、拾、佰、仟、万、亿 希望本文所述对
本文向大家介绍JS 数字转换为大写金额的简单实例,包括了JS 数字转换为大写金额的简单实例的使用技巧和注意事项,需要的朋友参考一下 JS 数字转换为大写金额的简单实例 以上这篇JS 数字转换为大写金额的简单实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。
本文向大家介绍php 把数字转换成汉字的代码,包括了php 把数字转换成汉字的代码的使用技巧和注意事项,需要的朋友参考一下 直接上实例,写到 千亿上了。 方法二: 以上所述就是本文的全部内容了,希望大家能够喜欢。
本文向大家介绍Java金额大小写的转换方法,包括了Java金额大小写的转换方法的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Java金额大小写转换的具体代码,供大家参考,具体内容如下 运行结果为: 1.23 壹元贰角叁分 1234567890123456.123 壹仟贰佰叁拾肆万伍仟陆佰柒拾捌亿玖仟零壹拾贰万叁仟肆佰伍拾陆元壹角贰分叁厘 0.0798 柒分玖厘 10,001,
本文向大家介绍JS实现将数字金额转换为大写人民币汉字的方法,包括了JS实现将数字金额转换为大写人民币汉字的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JS实现将数字金额转换为大写人民币汉字的方法。分享给大家供大家参考,具体如下: PS:这里再为大家提供一款在线工具供大家参考: 人民币大写在线转换工具: http://tools.jb51.net/zhuanhuanqi/rmbupp
本文向大家介绍js实现人民币大写金额形式转换,包括了js实现人民币大写金额形式转换的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了js实现金额转大写的相关代码,供大家参考,具体内容如下 以上就是本文的全部内容,希望对大家学习javascript程序设计有所帮助。