C#实现将浮点数表示的货币数量以汉字大写形式输出的方法
作者:北风其凉 发布时间:2022-06-10 03:10:36
标签:C#,汉字,大写
本文实例讲述了C#实现将浮点数表示的货币数量以汉字大写形式输出的方法。分享给大家供大家参考。具体如下:
1.函数代码
注:本段代码中能转化的最大的数为(1亿亿-0.01),如果要转化更大的浮点数,则需要做适当修改。
/// <summary>
/// 将字符型变量转化为大写汉语数字
/// </summary>
/// <param name="ch">字符 '0'~'9'</param>
/// <returns></returns>
private static string NumToChr(char ch)
{
switch (ch)
{
case '0': return "零";
case '1': return "壹";
case '2': return "贰";
case '3': return "叁";
case '4': return "肆";
case '5': return "伍";
case '6': return "陆";
case '7': return "柒";
case '8': return "捌";
case '9': return "玖";
default: return "";
}
}
/// <summary>
/// 把数字转换为大写数字
/// </summary>
/// <param name="n"></param>
/// <returns></returns>
private static string RMBToChr(double n)
{
//保留小数点后两位数字
string sMoney = n.ToString("#0.00");
StringBuilder sbResult = new StringBuilder();
for (int i = 0; i < sMoney.Length; i++)
{
//遇到小数点,则后面 A.XX 写为 A圆X角X分
if (sMoney[i] == '.')
{
sbResult.Append("圆");
//角和分属性都为0时直接写整字
if (sMoney[i + 1] == '0' && sMoney[i + 2] == '0')
{
sbResult.Append("整");
break;
}
else
{
//角和分属性只有在对应位不为0时才写
if (sMoney[i + 1] != '0')
{
sbResult.Append(NumToChr(sMoney[i + 1]) + "角");
}
if (sMoney[i + 2] != '0')
{
sbResult.Append(NumToChr(sMoney[i + 2]) + "分");
}
else //分为0时也要写整字
{
sbResult.Append("整");
}
break;
}
}
//非零数字直接输出对应数字和位
if (sMoney[i] != '0')
{
sbResult.Append(NumToChr(sMoney[i]));
//补上相应位的权
int temp = sMoney.Length - 4 - i;
switch (temp)
{
case 0: break;
case 1: sbResult.Append("拾"); break;
case 2: sbResult.Append("佰"); break;
case 3: sbResult.Append("仟"); break;
case 4: sbResult.Append("万"); break;
case 5: sbResult.Append("拾"); break;
case 6: sbResult.Append("佰"); break;
case 7: sbResult.Append("仟"); break;
case 8: sbResult.Append("亿"); break;
case 9: sbResult.Append("拾"); break;
case 10: sbResult.Append("百"); break;
case 11: sbResult.Append("仟"); break;
case 12: sbResult.Append("万"); break;
default: throw new Exception("这个数太大了!");
}
}
else //如果该位数字为0,则万位和亿位要写权,多个连续0就写一个零
{
int temp = sMoney.Length - 4 - i;
if (temp == 4) { sbResult.Append("万"); continue; }
else if (temp == 8) { sbResult.Append("亿"); continue; }
else if (sMoney[i + 1] == '0') { continue; }
else sbResult.Append("零");
}
}
return sbResult.ToString();
}
2.Main函数调用
static void Main(string[] args)
{
//数字转化为人民币大写
Console.WriteLine(RMBToChr(12345));
Console.WriteLine(RMBToChr(60001.215));
Console.WriteLine(RMBToChr(70010001.8));
Console.WriteLine(RMBToChr(10110901.01));
Console.WriteLine(RMBToChr(0.01));
Console.ReadLine();
}
3.运行示例
希望本文所述对大家的C#程序设计有所帮助。
0
投稿
猜你喜欢
- 一、安装及配置Genymotion(1)由于Eclipse中自带的SDK模拟器,启动之慢,不说了 现在给大家介绍一种比较快的模拟器Genym
- 1. 简介Jpa 是一套ORM 的规范hibernate 不就是一个 ORM 框架也提供了对于 JPA 的实现JPA(Java Persis
- 这篇文章需要对git具有一定的了解,并且知道如何安装git工具(其实就是上git官网下载个文件,安装)git这种版本控制工具有什么好处第一个
- Springmvc+hibernate成为现在很多人用的框架整合,最近自己也在学习摸索,由于我们在开发项目中很多项目都用到列表分页功能,在此
- 前言String 类在Java中是很常用的类,很重要的类,在后续的学习中经常会用到,是后续学习的基础一、认识String1.JDK中的Str
- 本文实例为大家分享了JavaWeb实现简单文件上传的具体代码,供大家参考,具体内容如下1.概述通常浏览器上传的所有参数,我们可以通过requ
- ——声明,脑残人士远离,本博客的核心不是if-else+前缀,而是如何通过URL协议处理框架定义私有协议URI与URL的区别URI (uni
- import java.util.HashMap;import java.util.Map;import org.apache.common
- 问题:写了一个新的dao接口,进行单元测试时提示:Initialization of bean failed; nested excepti
- 一,功能效果二,实现过程1,先写xml文件:dialog_keyboard.xml 注意事项(1),密码
- 本文为大家分享了java画出五子棋游戏棋盘的方法,供大家参考,具体内容如下棋盘模块:画五子棋棋盘:19条横线、19条竖线步骤一:显示棋盘我有
- 本文实例讲述了C#通过指针读取文件的方法。分享给大家供大家参考。具体如下:// readfile.cs// 编译时使用:/unsafe//
- 目录前言一、Spring Boot对Redis的支持二、实战1、添加依赖2、redis配置3、实现序列化4、创建Redis连接工厂,同时注册
- 最近在研究rabbitmq,项目中有这样一个场景:在用户要支付订单的时候,如果超过30分钟未支付,会把订单关掉。当然我们可以做一个定时任务
- Java自定义动态数组1、静态数组向动态数组转变(1)静态数组,数组空间固定长度这个数组空间总长为4,如果此时新插入一个数据就会报数组空间不
- 由于for循环可以通过控制循环变量的初始值和循环结束条件来改变遍历的区间,所以在排序或者遍历的时候,利用for循环就比较简单,以下是本人学习
- 前言小伙伴们在使用C#开发时,可能需要将一些信息写入到txt,这里就给大家介绍几种常用的方法。方法:1.将由字符串组成的数组写入txt此种方
- 在微信公众号支付的API中没有这个接口,如果企业需要给用户转账,或者让用户提现或者给用户发红包等需要再商户平台中的产品中心分别开通。一、开通
- 1、cmd指令,进入.svn目录,找到wc.db文件 sqlite 3 打开2、 对 svn源代码目录 右键, clean up, 稍等1至
- 本文为大家分享了使用栈的迷宫算法java版,主要考察栈的使用,供大家参考,具体内容如下主要思路如下: do { if(当前位置可通过) {