c# 财务报表数字转大写的方法

/// <summary>
/// 数字转大写
/// </summary>
/// <param name="Num">数字</param>
/// <returns></returns>

public static string CmycurD(decimal num)
{
string str1 = "零壹贰叁肆伍陆柒捌玖"; //0-9所对应的汉字
string str2 = "万仟佰拾亿仟佰拾万仟佰拾元角分"; //数字位所对应的汉字
string str3 = ""; //从原num值中取出的值
string str4 = ""; //数字的字符串形式
string str5 = ""; //人民币大写金额形式
int i; //循环变量
int j; //num的值乘以100的字符串长度
string ch1 = ""; //数字的汉语读法
string ch2 = ""; //数字位的汉字读法
int nzero = 0; //用来计算连续的零值是几个
int temp; //从原num值中取出的值

num = Math.Round(Math.Abs(num), 2); //将num取绝对值并四舍五入取2位小数
str4 = ((long)(num * 100)).ToString(); //将num乘100并转换成字符串形式
j = str4.Length; //找出最高位
if (j > 15) { return "溢出"; }
str2 = str2.Substring(15 - j); //取出对应位数的str2的值。如:200.55,j为5所以str2=佰拾元角分

//循环取出每一位需要转换的值
for (i = 0; i < j; i++)
{
str3 = str4.Substring(i, 1); //取出需转换的某一位的值
temp = Convert.ToInt32(str3); //转换为数字
if (i != (j - 3) && i != (j - 7) && i != (j - 11) && i != (j - 15))
{
//当所取位数不为元、万、亿、万亿上的数字时
if (str3 == "0")
{
ch1 = "";
ch2 = "";
nzero = nzero + 1;
}
else
{
if (str3 != "0" && nzero != 0)
{
ch1 = "零" + str1.Substring(temp * 1, 1);
ch2 = str2.Substring(i, 1);
nzero = 0;
}
else
{
ch1 = str1.Substring(temp * 1, 1);
ch2 = str2.Substring(i, 1);
nzero = 0;
}
}
}
else
{
//该位是万亿,亿,万,元位等关键位
if (str3 != "0" && nzero != 0)
{
ch1 = "零" + str1.Substring(temp * 1, 1);
ch2 = str2.Substring(i, 1);
nzero = 0;
}
else
{
if (str3 != "0" && nzero == 0)
{
ch1 = str1.Substring(temp * 1, 1);
ch2 = str2.Substring(i, 1);
nzero = 0;
}
else
{
if (str3 == "0" && nzero >= 3)
{
ch1 = "";
ch2 = "";
nzero = nzero + 1;
}
else
{
if (j >= 11)
{
ch1 = "";
nzero = nzero + 1;
}
else
{
ch1 = "";
ch2 = str2.Substring(i, 1);
nzero = nzero + 1;
}
}
}
}
}
if (i == (j - 11) || i == (j - 3))
{
//如果该位是亿位或元位,则必须写上
ch2 = str2.Substring(i, 1);
}
str5 = str5 + ch1 + ch2;

if (i == j - 1 && str3 == "0")
{
//最后一位(分)为0时,加上“整”
str5 = str5 + ‘整‘;
}
}
if (num == 0)
{
str5 = "零元整";
}
return str5;
}

时间: 2024-10-08 08:06:22

c# 财务报表数字转大写的方法的相关文章

js 将数字转换成人民币大写的方法

//将数字转换成人民币大写的方法 var digitUppercase = function (n) { var fraction = ['角', '分']; var digit = [ '零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖' ]; var unit = [ ['元', '万', '亿'], ['', '拾', '佰', '仟'] ]; var IsNum = Number(n); if (!isNaN(IsNum)) { var hea

大写数字时钟安卓下载方法-阿拉伯大写数字

[应用名称]:冷高轮时间 [应用大小]:6.83 [支持平台]:安卓(Android),苹果(iOS) [时钟样式]男神数字,女神数字,梵高数字,王思聪吃热狗数字,大写数字,中文汉字,麻将数字,扑克数字. 电脑壁纸下载可在wallpaper engine或者upupoo上搜索全称“冷高轮时间‘ 电脑屏保可在冷高轮时间官网下载:lenggaolun.com(com前面是点不是句号) 手机APP可在android和ios各大应用市场搜索全称'冷高轮时间“下载 [软件介绍]:闲置手机,旧手机发光发亮

php在数字前面补0得到固定长度数字的两种方法

比较基础,其实两个内置函数都能实现. 1  sprintf 语法: string sprintf(string format, mixed [args]...); 返回值: 字符串 函数种类: 资料处理 本函数用来将字符串格式化.参数 format 是转换的格式,以百分比符号 % 开始到转换字符为止.而在转换的格式间依序包括了 填空字符.0 的话表示空格填 0:空格是默认值,表示空格就放着. 对齐方式.默认值为向右对齐,负号表向左对齐. 字段宽度.为最小宽度. 精确度.指在小数点后的浮点数位数.

while补充,字符串和数字的内置方法

一.while循环的补充 while True: name=input('please input your name: ') password=input('please input your password: ') if name == 'egon' and password == '123': print('login successfull') while True: cmd=input('>>: ') if cmd == 'quit': break print('====>'

王小胖之数字转大写

使用场景:一般在书写正规金额的时候都要求填写大写数字. 实现功能:数字转大写功能主要实现:输入小写阿拉伯数字,转换成大写 数据实例:输入,12345678.90   输出,人民币:壹仟贰佰叁拾肆万伍仟陆佰柒拾捌元玖角 功能实现: Html代码 <div class="input-group"> <input name="kw" type="text" class="form-control" placehol

Shell中判断字符串是否为数字的6种方法分享

#!/bin/bash ## 方法1 a=1234;echo "$a"|[ -n "`sed -n '/^[0-9][0-9]*$/p'`" ] && echo string a is numbers 第一个-n是shell的测试标志,对后面的串"`sed -n '/^[0-9][0-9]*$/p'`" 进行测试,如果非空,则结果为真. sed默认会显示所有输入行信息的,sed 的“-n”选项是让sed不要显示,而只显示我们所需要

iphone 浏览器自动解析数字为号码解决方法

iphone 浏览器自动解析数字为号码解决方法 www.MyException.Cn  网友分享于:2015-10-09  浏览:0次 iphone 浏览器自动解析数字为号码解决办法 在工作中遇到了这么一个问题 —— 在HTML代码中有一部分数字,设定的样式为“白色”,在android 浏览器 和 PC web中显示都是正常的,但是在iphone浏览器中先显示为白色,之后有变为“黑色”,在点击这串数字的时候,显示为拨打电话界面. 分析: 根据上图展现的方式说明“1234-5678-9999”添加

eclipse的数字标点错乱解决方法

今天用eclipse的时候,出现了一个小问题.数字变成了标点,标点变成了数字,比如我左shift+2 结果出来是双引号,而shift+“显示@.当然这个简单,只要重启eclipse就行了,但是总有些时候eclipse有服务器在跑,不想关. 这时候一般有三种解决情况. 1.输入法问题,我碰到这个就是.默认输入法才有问题,切换成百度输入是木有问题的,那就切吧.搞定 2.Numlock,查看Numlock灯是否亮着,切换状态再试一下.小键盘的问题在laptop碰到居多 3.shift键被按死.键盘有点

小写数字转大写

--小写数字转大写,只是单纯的将数字转换为大写了,还要加单位 create or replace function chinese(number1 number) return varchar2 is Result varchar2(30):=' '; v_chinese varchar2(25):='零壹贰叁肆伍陆柒捌玖'; v_char varchar2(10); begin for i in 1..length(number1) loop select substr(v_chinese,s