(C#)数值型货币的大写转换

大写|货币|转换

本人现在做的项目要求对数值型货币,转换成大写,在网上搜索了半天,没有找到C#写的类型,不得不自己写了,测试了,还能满足要求,只是算法有点繁琐,有哪位大虾再给改改!
下面就是我得代码:
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

namespace WinMarket
{
/// <summary>
/// Classfun 的摘要说明。
/// </summary>
public class Classfun
{
private string Capstr;

public Classfun()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public string MoneyNumtoCap(decimal Num)
{
string Cap="零壹贰叁肆伍陆柒捌玖";
string Numstr="0123456789";
string MoneyNumstr=Num.ToString();
int Pint=MoneyNumstr.IndexOf(".");
int Numint;

string Moneyint=null;
string Moneydec=null;
string Intstr=null;
string MoneyCap=null;
string Moneyintstr=null;
string Moneydecstr=null;
// Capstr=Pint.ToString();

if(Pint!=-1)
{
string strArr=".";
char[] charArr=strArr.ToCharArray();
string[] MoneyNumArr=MoneyNumstr.Split(charArr);
Moneyint=MoneyNumArr[0].ToString();
Moneydec=MoneyNumArr[1].ToString();

}
else
{
Moneyint=MoneyNumstr;
Moneydec="00";
}

if(Moneyint.Length>16)
{
MessageBox.Show("数值超界");
}
else
{
//--- 处理整数部分--------

for(int j=1;j<=Moneyint.Length;j++)
{
Moneyintstr=Moneyint.Substring(j-1,1);
for(int i=0;i<=9;i++)
{

Intstr=Numstr.Substring(i,1);
MoneyCap=Cap.Substring(i,1);

if(Moneyintstr==Intstr)
{

switch (Intstr)
{
case "0":
Capstr=Capstr+MoneyCap;
break;
case "1":
Capstr=Capstr+MoneyCap;
break;
case "2":
Capstr=Capstr+MoneyCap;
break;
case "3":
Capstr=Capstr+MoneyCap;
break;
case "4":
Capstr=Capstr+MoneyCap;
break;
case "5":
Capstr=Capstr+MoneyCap;
break;
case "6":
Capstr=Capstr+MoneyCap;
break;
case "7":
Capstr=Capstr+MoneyCap;
break;
case "8":
Capstr=Capstr+MoneyCap;
break;
case "9":
Capstr=Capstr+MoneyCap;
break;
}
}
}
Numint=Moneyint.Length-j+1;
switch (Numint)
{
case 16:
Capstr=Capstr+"仟万";
break;
case 15:
Capstr=Capstr+"佰万";
break;
case 14:
Capstr=Capstr+"拾万";
break;
case 13:
Capstr=Capstr+"万";
break;

case 12:
Capstr=Capstr+"仟";
break;

case 11:
Capstr=Capstr+"佰";
break;

case 10:
Capstr=Capstr+"拾";
break;

case 9:
Capstr=Capstr+"亿";
break;

case 8:
Capstr=Capstr+"仟";
break;

case 7:
Capstr=Capstr+"佰";
break;

case 6:
Capstr=Capstr+"拾";
break;

case 5:
Capstr=Capstr+"万";
break;

case 4:
Capstr=Capstr+"仟";
break;
case 3:
Capstr=Capstr+"佰";
break;
case 2:
Capstr=Capstr+"拾";
break;
case 1:
Capstr=Capstr+"元";
break;

}

}

//------处理小数部分-----
for(int j=1; j<=2; j++)
{
Moneydecstr=Moneydec.Substring(j-1,1);

for(int i=0;i<=9;i++)
{
Intstr=Numstr.Substring(i,1);
MoneyCap=Cap.Substring(i,1);
if(Moneydecstr==Intstr)
{

switch (Intstr)
{
case "0":
Capstr=Capstr+MoneyCap;
break;
case "1":
Capstr=Capstr+MoneyCap;
break;
case "2":
Capstr=Capstr+MoneyCap;
break;
case "3":
Capstr=Capstr+MoneyCap;
break;
case "4":
Capstr=Capstr+MoneyCap;
break;
case "5":
Capstr=Capstr+MoneyCap;
break;
case "6":
Capstr=Capstr+MoneyCap;
break;
case "7":
Capstr=Capstr+MoneyCap;
break;
case "8":
Capstr=Capstr+MoneyCap;
break;
case "9":
Capstr=Capstr+MoneyCap;
break;
}
}
}

switch(j)
{
case 1:
Capstr=Capstr+"角";
break;
case 2:
Capstr=Capstr+"分";
break;

}

}

}

return Capstr;
}

}
}

时间: 2024-08-04 09:38:05

(C#)数值型货币的大写转换的相关文章

数值型货币的大写转换

大写|货币|转换 using System;using System.Drawing;using System.Collections;using System.ComponentModel;using System.Windows.Forms;using System.Data; namespace WinMarket{ /// <summary> /// Classfun 的摘要说明. /// </summary> public class Classfun { private

精华区中的“货币大写转换函数的更新!”是有问题的

大写|函数|货币|精华|问题|转换 不信你拿1000000让它试试,出来的是壹百元整还有,拿10000000来试的话,出来的是壹仟元整

Python基本语法_基本数据类型_数值型详解

目录 目录 软件环境 Python变量调用的过程 数值型 删除一个数值类型对象 布尔型 Bool 标准整型 Int 长整型 双精度浮点型 Float 复数 数值类型对象的内建功能函数 absNumber 求Number的绝对值 coercex y 将x y转换为同一种数值类型 divmodx y 除法-取余运算的结合 pow 指数运算或将结果取余 round 浮点型的四舍五入运算和求精度 仅用于整型对象的函数 数值型相关模块推荐 软件环境 系统 CentOS 7 软件 Python 2.7.5

神经网络-BP网络的输入可以是图像吗,而非数值型数据

问题描述 BP网络的输入可以是图像吗,而非数值型数据 最近想要利用BP网络实现图像质量评价,选取图像的几个特征向量作为BP网络的输入.但是经过调研发现,一般BP的输入都是数值组成的,想请教各位是否可以将提取到的边缘形状等非数值型数据(例如由边缘检测算子检测得到的边缘图像)直接作为BP网络的输入? 解决方案 BP神经网络反向的误差传播过程中有求导运算的,必须是连续可导的函数才能进行此运算,所以输入也必须是数值型的数据,向量或者矩阵.你的质量评价多半还是要通过采样和训练来确定最终结果的.希望对你有帮

ascii字符串压缩-Oracle数据库存储需要:Ascii数值型字符串压缩

问题描述 Oracle数据库存储需要:Ascii数值型字符串压缩 数值型字符串,比如:123.44 23.54 34.65....,总数大约86400个,以空格符分隔,采用什么压缩算法最为有效?压缩速度要快,压缩比率越小越好,可还原,无损! 解决方案 Ascii的值都是整形的而且范围值0到127,浮点类型可以转换吗

js数值和和字符串进行转换时可以对不同进制进行操作

 这篇文章主要介绍了js数值和和字符串进行转换时可以对不同进制进行操作,需要的朋友可以参考下 Javascript数值和和字符串进行转换时,可以对不同的进制进行操作.    转换例子如下:   代码如下: <html>    <head>  <meta http-equiv="Content-Type" content="text/html; charset=gb2312">  <title>带进制的数值和字符串间进行

Hive、MapReduce、Spark分布式生成唯一数值型ID

在实际业务场景下,经常会遇到在Hive.MapReduce.Spark中需要生成唯一的数值型ID. 一般常用的做法有: MapReduce中使用1个Reduce来生成; Hive中使用row_number分析函数来生成,其实也是1个Reduce; 借助HBase或Redis或Zookeeper等其它框架的计数器来生成; 数据量不大的情况下,可以直接使用1和2方法来生成,但如果数据量巨大,1个Reduce处理起来就非常慢. 在数据量非常大的情况下,如果你仅仅需要唯一的数值型ID,注意:不是需要"连

jxl 数值型单元格-jxl 操作excel表格,新增的数值型单元格如何格式化

问题描述 jxl 操作excel表格,新增的数值型单元格如何格式化 比如字符串的单元格,可以引用定义好的样式myStyle,如: Label lb1 = new jxl.write.Label(10, 0, "正常",myStyle); sheet0.addCell(lb1); 但数值型增加的时候,少了一个类似的引用格式参数,如: jxl.write.Number lb2 = new jxl.write.Number(11, 0, 11.11); sheet0.addCell(lb1)

c语言-C语言大写转换小写问题

问题描述 C语言大写转换小写问题 #include int main(){ char array[5]; scanf("%s",&array); for(int i=0;i<5;i++){ array[i] += 32; } //int n = 0; printf("%s",array); return 0; } 程序如上,当把注释那一行省略后,输出结果里总有一个?,但加上以后就好了. 求解,万分感谢! 解决方案 你定义5,只能输入4个字符. 你的字符