Money类


 public class Money
{
/// <summary>
/// 要转换的数字
/// </summary>
private double j;
private string m_pb;
/// <summary>
///
/// </summary>
private string[] NumChineseCharacter = new string[] { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };

public Money(double m)
{
this.j = m;
m_pb = string.Empty;
if (this.j < 0)
{
m_pb = "负";
this.j *= -1;
}
}
/// <summary>
/// 判断输入的数字是否大于double类型
/// </summary>
private bool IsNumber
{
get
{
//if (j > double.MaxValue || j <= 0)
if (j > double.MaxValue || j <= double.MinValue)
return false;
else
return true;
}
}
/// <summary>
/// 数字转换成大写汉字主函数
/// </summary>
/// <returns>返回转换后的大写汉字</returns>
public string Convert()
{
string bb = "";
if (IsNumber)
{
string str = j.ToString();
string[] Num = str.Split(‘.‘);
if (Num.Length == 1)
{
bb = NumberString(Num[0]) + "元整";
bb = bb.Replace("零零", "零");
}
else
{
bb = NumberString(Num[0]) + "元";
bb += FloatString(Num[1]);
bb = bb.Replace("零零", "零");
}
}
else
{
throw new FormatException("你输入的数字格式不正确或不是数字!");
}
return m_pb + bb;
}
/// <summary>
/// 小数位转换只支持两位的小数
/// </summary>
/// <param name="Num">转换的小数</param>
/// <returns>小数转换成汉字</returns>
private string FloatString(string Num)
{
string cc = "";
if (Num.Length > 2)
{
throw new FormatException("小数位数过多.");
}
else
{
string bb = ConvertString(Num);
int len = bb.IndexOf("零");
if (len != 0)
{
bb = bb.Replace("零", "");
if (bb.Length == 1)
{
cc = bb.Substring(0, 1) + "角整";
}
else
{
cc = bb.Substring(0, 1) + "角";
cc += bb.Substring(1, 1) + "分";
}
}
else
cc = bb + "分";
}
return cc;
}
/// <summary>
/// 判断数字位数以进行拆分转换
/// </summary>
/// <param name="Num">要进行拆分的数字</param>
/// <returns>转换成的汉字</returns>
private string NumberString(string Num)
{
string bb = "";
if (Num.Length <= 4)
{
bb = Convert4(Num);
}
else if (Num.Length > 4 && Num.Length <= 8)
{
bb = Convert4(Num.Substring(0, Num.Length - 4)) + "万";
bb += Convert4(Num.Substring(Num.Length - 4, 4));
}
else if (Num.Length > 8 && Num.Length <= 12)
{
bb = Convert4(Num.Substring(0, Num.Length - 8)) + "亿";
if (Convert4(Num.Substring(Num.Length - 8, 4)) == "")
if (Convert4(Num.Substring(Num.Length - 4, 4)) != "")
bb += "零";
else
bb += "";
else
bb += Convert4(Num.Substring(Num.Length - 8, 4)) + "万";
bb += Convert4(Num.Substring(Num.Length - 4, 4));
}
return bb;
}
/// <summary>
/// 四位数字的转换
/// </summary>
/// <param name="Num">准备转换的四位数字</param>
/// <returns>转换以后的汉字</returns>
private string Convert4(string Num)
{
string bb = "";
if (Num.Length == 1)
{
bb = ConvertString(Num);
}
else if (Num.Length == 2)
{
bb = ConvertString(Num);
bb = Convert2(bb);
}
else if (Num.Length == 3)
{
bb = ConvertString(Num);
bb = Convert3(bb);
}
else
{
bb = ConvertString(Num);
string cc = "";
string len = bb.Substring(0, 4);
if (len != "零零零零")
{
len = bb.Substring(0, 3);
if (len != "零零零")
{
bb = bb.Replace("零零零", "");
if (bb.Length == 1)
{
bb = bb.Substring(0, 1) + "仟";
}
else
{
if (bb.Substring(0, 1) != "零" && bb.Substring(0, 2) != "零")
cc = bb.Substring(0, 1) + "仟";
else
cc = bb.Substring(0, 1);
bb = cc + Convert3(bb.Substring(1, 3));
}
}
else
{
bb = bb.Replace("零零零", "零");
}
}
else
{
bb = bb.Replace("零零零零", "");
}
}
return bb;
}
/// <summary>
/// 将数字转换成汉字
/// </summary>
/// <param name="Num">需要转换的数字</param>
/// <returns>转换后的汉字</returns>
private string ConvertString(string Num)
{
string bb = "";
for (int i = 0; i < Num.Length; i++)
{
bb += NumChineseCharacter[int.Parse(Num.Substring(i, 1))];
}
return bb;
}
/// <summary>
/// 两位数字的转换
/// </summary>
/// <param name="Num">两位数字</param>
/// <returns>转换后的汉字</returns>
private string Convert2(string Num)
{
string bb = ""; string cc = "";
string len = Num.Substring(0, 1);
if (len != "零")
{
bb = Num.Replace("零", "");
if (bb.Length == 1)
{
cc = bb.Substring(0, 1) + "拾";
}
else
{
cc = bb.Substring(0, 1) + "拾";
cc += bb.Substring(1, 1);
}
}
else
cc = Num;
return cc;
}
/// <summary>
/// 三位数字的转换
/// </summary>
/// <param name="Num">三位数字</param>
/// <returns>转换后的汉字</returns>
private string Convert3(string Num)
{
string bb = ""; string cc = "";
string len = Num.Substring(0, 2);
if (len != "零零")
{
bb = Num.Replace("零零", "");
if (bb.Length == 1)
{
bb = bb.Substring(0, 1) + "佰";
}
else
{
if (bb.Substring(0, 1) != "零")
cc = bb.Substring(0, 1) + "佰";
else
cc = bb.Substring(0, 1);
bb = cc + Convert2(bb.Substring(1, 2));
}
}
else
{
bb = Num.Replace("零零", "零");
}
return bb;
}
}

调用

Money money = new Money(double.Parse(txt_num.Text));
txt_num.Text = money.Convert();

Money类,布布扣,bubuko.com

时间: 2024-11-06 18:53:41

Money类的相关文章

jvm系列(一):java类的加载机制

java类的加载机制 原文:http://www.cnblogs.com/ityouknow/p/5603287.html 1.什么是类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构.类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问方法区内的数据结构的接口. 类加载器并不需要等到某个

iOS -- SKSpriteNode类

SKSpriteNode类 继承自 SKNode:UIResponder:NSObject 符合 NSCoding(SKNode)NSCopying(SKNode)NSObject(NSObject) 框架  /System/Library/Frameworks/SpriteKit.framework 可用性 可用于iOS 7.0或者更晚的版本 声明于 SKSpriteNode.h 参考指南 Sprite Kit Progamming Guide 概览 重要提示:这是一个初步的API或者开发技术

iOS -- SKScene类

SKScene类 继承自 SKEffectNode:SKNode:UIResponder:NSObject 符合 NSCoding(SKNode)NSCopying(SKNode)NSObject(NSObject) 框架  /System/Library/Frameworks/SpriteKit.framework 可用性 可用于iOS 7.0或者更晚的版本 声明于 SKScene.h 参考指南 Sprite Kit Progamming Guide 概览 重要提示:这是一个初步的API或者开

iOS -- SKPhysicsWorld类

SKPhysicsWorld类 继承自 NSObject 符合 NSCodingNSObject(NSObject) 框架  /System/Library/Frameworks/SpriteKit.framework 可用性 可用于iOS 7.0或者更晚的版本 声明于 SKPhysicsWorld.h 参考指南 Sprite Kit Progamming Guide 概览 重要提示:这是一个初步的API或者开发技术文档.虽然已经审阅了本文档的技术准确性,但是它不是最终的版本.本机密信息仅适用于

C#嵌套类

嵌套类顾名思义就是类或者结构中定义的类 class Container { class Nested { Nested() { } } } <1>嵌套类的默认访问权限是private ,可以指定为public,protected,private,internal,protected internal.<2>嵌套类型可以访问外部类(包裹嵌套类的类),如果要访问外部类型,要把外部类通过构造函数传进一个实例<3>嵌套类中只能访问外部类中的静态成员,不能直接访问外部类的非静态成

一个实用的C#网页抓取类代码分享

一个实用的C# 网页抓取类 模拟蜘蛛,类中定义了超多的C#采集文章.网页抓取文章的基础技巧,下面分享代码: using System; using System.Data; using System.Configuration; using System.Net; using System.IO; using System.Text; using System.Collections.Generic; using System.Text.RegularExpressions; using Sys

类图(Rose) - Windows XP经典软件系列

最近开始了自己高级数据结构之旅,在这次旅行中,我将持续把一些高级的数据结构从理论到编码都过一遍,同时通过博客形式分享出来,希望大家指出不足之处! 二叉排序树是一种动态排序的数据结构,支持插入.删除.查找等操作,且平均时间复杂度为O(log(N)),但是普通二叉排序树不能保证树退化为一颗分支的情况,此时最坏情况下的时间复杂度为O(N).此时,平衡二叉树的产生了.平衡二叉树是一种动态调整平衡的数据结构,但理想的平衡二叉树很难,于是人们使用AVL.红黑树.Treap.伸展树等来替代平衡二叉树,这些数据

java 类对象使用

在学习反射机制时,总结一下获得类对象方式: 第一种方式:通过类本身来获得对象 Class<?> classname = this.getClass(); 或者this.class 第二种方式:通过子类的实例获取父类对象 ClassName cn = new ClassName(); UserClass = cn.getClass(); Class<?> SubUserClass = UserClass.getSuperclass(); 第三种方式:通过类名加.class获取对象 C

Python-class类的相关总结

在Python中,所有的数据类型都可以视为对象,自定义的对象数据类型就是面向对象中的类(class)的概念. 面向对象编程:object oriented programming简称OOP. 1 ###简单举例,以登记学生的姓名和成绩举例 2 #!/usr/bin/python 3 #-*- coding:utf-8 -*- 4 class Student(object): ##定义student类 5 def __init__(self, name, score): ##__init__可以绑

java String 类 基础笔记

字符串是一个特殊的对象. 字符串一旦初始化就不可以被改变. String s = "abc";//存放于字符串常量池,产生1个对象 String s1=new String("abc");//堆内存中new创建了一个String对象,产生2个对象 String类中的equals比较字符串中的内容. 常用方法: 一:获取 1.获取字符串中字符的个数(长度):length();方法. 2.根据位置获取字符:charAt(int index); 3.根据字符获取在字符串中