首页 > 编程语言 >实现货币金额中文大写转换的程序

实现货币金额中文大写转换的程序

时间:2023-04-19 11:06:59浏览次数:49  
标签:中文 Right 转换 temp Mid Len Replace 避免 大写


Function daxie(money As String) As String '
Dim x As String, y As String
Const zimu = ".sbqwsbqysbqwsbq" '定义位置代码
Const letter = "0123456789sbqwy.zjf" '定义汉字缩写
Const upcase = "零壹贰叁肆伍陆柒捌玖拾佰仟萬億圆整角分" '定义大写汉字
Dim temp As String
temp = money
If InStr(temp, ".") > 0 Then temp = Left(temp, InStr(temp, ".") - 1)

If Len(temp) > 16 Then MsgBox "数目太大,无法换算!请输入一亿亿以下的数字", 64, "错误提示": Exit Function '只能转换一亿亿元以下数目的货币!

x = Format(money, "0.00") '格式化货币
y = ""
For i = 1 To Len(x) - 3
y = y & Mid(x, i, 1) & Mid(zimu, Len(x) - 2 - i, 1)
Next
If Right(x, 3) = ".00" Then
y = y & "z"          '***元整
Else
 y = y & Left(Right(x, 2), 1) & "j" & Right(x, 1) & "f"     '*元*角*分
 End If
y = Replace(y, "0q", "0") '避免零千(如:40200肆萬零千零贰佰)
y = Replace(y, "0b", "0") '避免零百(如:41000肆萬壹千零佰)
y = Replace(y, "0s", "0") '避免零十(如:204贰佰零拾零肆)

Do While y <> Replace(y, "00", "0")
y = Replace(y, "00", "0") '避免双零(如:1004壹仟零零肆)
Loop
y = Replace(y, "0y", "y") '避免零億(如:210億     贰佰壹十零億)
y = Replace(y, "0w", "w") '避免零萬(如:210萬     贰佰壹十零萬)
y = IIf(Len(x) = 5 And Left(y, 1) = "1", Right(y, Len(y) - 1), y) '避免壹十(如:14壹拾肆;10壹拾)
y = IIf(Len(x) = 4, Replace(y, "0.", ""), Replace(y, "0.", ".")) '避免零元(如:20.00贰拾零圆;0.12零圆壹角贰分)

For i = 1 To 19
y = Replace(y, Mid(letter, i, 1), Mid(upcase, i, 1)) '大写汉字
Next
daxie = y
End Function

Private Sub Command3_Click()
Debug.Print  daxie("6218212212309322.3238") ' return: 陆仟贰佰壹拾捌萬贰仟壹佰贰拾贰億壹仟贰佰叁拾萬玖仟叁佰贰拾贰圆叁角贰分
End Sub

标签:中文,Right,转换,temp,Mid,Len,Replace,避免,大写
From: https://blog.51cto.com/u_3649463/6205947

相关文章

  • DataGrid应用技巧两则(downmoon)---列求和与列字段转换
    DataGrid应用技巧两则(downmoon)---列求和与列字段转换<scriptlanguage="javascript"type="text/javascript">document.title="DataGrid应用技巧两则(downmoon)---列求和与列字段转换-"+document.title</script>DataGrid应用技巧两则(downmoon)一:增加求和列: pri......
  • go语言中如何把数字转换成字节切片并在网络中传输
    客户端:先把数字转换成uint32类型:varpkgLen=uint32(len(data))再定义一个字节切片:varbuf=make([]byte,4)最后通过encoding.binary包中的方法,把无符号数字装载到字节切片中:binary.BigEndian.PutUint32(buf[0:4],pkgLen)这样就可以在网络中发送数字了:conn.Wri......
  • YOLOV8中文类名显示报错
    YOLOV8中文显示问题问题引出:​ 最近再跑YOLOV8项目,跑到这份数据集的类名是中文类名,自己也没有太在意,知道的过程出现些报错,这些爆错如下:/usr/local/lib/python3.8/dist-packages/ultralytics/yolo/utils/metrics.py:399:UserWarning:Glyph24102(\N{CJKUNIFIEDIDEOGRAPH-5E......
  • Django笔记二十四之数据库函数之比较和转换函数
    本文首发于公众号:Hunter后端原文链接:Django笔记二十四之数据库函数之比较和转换函数这一篇笔记开始介绍几种数据库函数,以下是几种函数及其作用Cast转换类型Coalesce优先取值Greatest返回较大值Nullif值相同返回None1、model准备这一篇笔记我们主要用到Author......
  • 角度与弧度的转换
    转换关系radians=degreesxΠ/180degrees=radiansx180/Π#ifndefTRIG_H#defineTRIG_H#include<iostream.h>#include<math.h>doubleradians(doubled);doubledegrees(doubler);#endif#include"trig.h"doubleradians(doubl......
  • COIG:开源四类中文指令语料库
    CHINESEOPENINSTRUCTIONGENERALIST:APRELIMINARYRELEASE论文:https://arxiv.org/pdf/2304.07987v1.pdf数据地址:https://huggingface.co/datasets/BAAI/COIGPart1介绍COIG的特点:领域适应性:如表1所示。我们考虑了指令微调数据集的四个方面(验证,格式,文化,缩放)。对于每个领域......
  • Java文件下载代码及中文文件名不显示的问题
    @GetMapping("/downloadOrderDemo")publicResponseEntity<Resource>downloadFile()throwsIOException{//读取文件内容Filefile=newFile(System.getProperty("user.dir")+File.separator+"work-order/src/main/......
  • 图像处理Photoshop 2023(ps2023)v24.2中文mac版
    Photoshop2023(ps2023)图像处理v24.2中文版,我们对它进行了改进。新的设置菜单将提供更好的操作。增强了对图像处理功能的支持。新增了“使用Photoshop在多个平台间移动图像”功能。新的编辑界面更简单了。→→↓↓载Photoshop2023Mac版 1.全新的设置菜单对新版本的设......
  • JAVA中文件写入的6种方法(转)
    https://www.cnblogs.com/rinack/p/14173936.html在Java中操作文件的方法本质上只有两种:字符流和字节流,而字节流和字符流的实现类又有很多,因此在文件写入时我们就可以选择各种各样的类来实现。我们本文就来盘点一下这些方法,顺便测试一下它们性能,以便为我们选出最优的写入方法。......
  • NAGA将发行820万美元可转换债券、Tradier宣布完成2460万美元B轮融资!
    过去一周在外汇和差价合约交易领域中,以下是广受大家关注的新闻,比如NAGA将发行820万美元可转换债券、Tradier完成了2460万美元的B轮融资、eToro与Twitter$Cashtags合作进行股票、ETF和加M货币交易。具体新闻如下:1、NAGA将发行820万美元可转换债券据悉,近期零售外汇和差价合约经纪公......