c# 小写金额转大写
using System;
using System.Collections.Generic;
using System.Text;
namespace FrameworkApp
{
// 该类重载的 ToString() 方法返回的是大写金额字符串
public 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();
}
}
}
转载于:https://www.cnblogs.com/w84717/archive/2008/06/22/1227753.html
c# 小写金额转大写相关推荐
- SQL人民币小写金额转大写
--1.人民币小写金额转大写(第一版) ==================================================================== -- Title: 人 ...
- 人民币小写金额转大写
-- ==================================================================== -- Title: 人民币小写金额转大写 -- Auth ...
- JQ实现小写金额转大写
JQ代码如下: <script>//小写金额转大写function num_change(money) {//汉字的数字var cnNums = new Array('零', '壹', ' ...
- JS人民币小写金额转换为大写(没毛病)
/** * 人民币小写金额转换为大写 */ export const digitUppercase = (n) => {let fraction = ['角', '分'] let digit = ...
- (转)人民币小写金额转大写(SQL)
以下转自 http://www.qeqoo.com/dev/database/dbms/3216.html -- =========================================== ...
- oracle人民币转大写,Oracle 小写金额转换为大写
在开发EBS的合同报表打印的时候需要将小写金额转换为大写. 如下是本人自己写的转换函数. 主要思路:先获取小数点位置,在区分整数与小数点处理,根据位数和数字组合读取金额. 最后再处理特殊显示部分. / ...
- 【叶子函数分享十八】人民币小写金额转大写
--1.人民币小写金额转大写(第一版) ==================================================================== -- Title: 人 ...
- Java小写金额转换大写与金额比对(支持繁体大写金额)
package com.gerrard.pmc.util;import java.util.HashMap; import java.util.Map;import org.apache.common ...
- js实现小写金额转大写
公共方法: /** 小写金额转大写金额 */dealBigMoney(n) {if (!/^(0|[1-9]\d*)(\.\d+)?$/.test(n)) { return '数据非法' }let u ...
- 会计金额格式化(千分位,小写金额转大写)
千分位 export function numberToCurrencyNo(value) {if (!value) return 0// 获取整数部分const intPart = Math.tru ...
最新文章
- v-model无法对返回的数据进行填写_学会数据分析思维,学会透过事物看本质
- winscp连接虚拟机Linux被拒绝的问题解决方案
- Here Document和Expect概述(免交互,变量设定,控制,注释,)(shell里使用EOF报错)
- jupyter notebook怎么写python代码_如何在Jupyter Notebook中使用Python虚拟环境?
- 14英寸电脑长宽多少_连接4K显示器流行,带雷电3雷电4接口的笔记本要多少钱?...
- r语言 c语言调用函数返回值,r语言中怎样查看函数源代码
- 65279 php,php头部#65279;去除bom执行文件
- define特殊用法
- Tricks(三十八)—— 在不计算欧式距离的前提下判断点到两点的距离哪个更近
- 设计模式(二)--单例模式
- 计算机的分类按cpu芯片可以分为,按CPU芯片可分为单片机、单板机、多芯片机和多板机...
- unity内置浏览器插件UniWebView的使用(支持Android,ios,Mac)
- 2021年6月1日大学化学无机原理(12)——第六章四个量子数、多电子的核外排布。
- 《Java解惑》系列——01表达式之谜——谜题09:半斤
- Mac 下 unrar 命令
- C++实现STL文件向glTF文件的转换
- 网页中标签对搜索引擎的影响
- 灰度直方图与特征直方图的使用方法
- 面向对象的特性——继承
- 基于labview的tcp通信设计简要教程
热门文章
- 设计模式C++(Strategy策略模式)
- 五种代理IP proxy的设置方法
- mysql数据库文件结构同步,[数据库的表同步mysql]MySQL表结构同步
- 算法:Sliding Window Maximum(滑动窗口最大值)
- html与css怎么混合运用,Web设计中的CSS混合模式
- 要连plsql是不是要装oracle,PLSQL直接连接数据库,不装ORACLE
- 452.用最少数量的箭引爆气球
- 合法的括号序列匹配数
- Regularized logistic regression(正则化逻辑回归)----吴恩达机器学习
- 360云盘会不会停止服务器,360云盘能否继续使用啊?