大写汉字转阿拉伯数字c语言,阿拉伯数字转换成中文大写数字

这篇博客介绍了一个AutoIt脚本函数,名为NUM2CWORD,用于将数字转换为中文大写和古体数字。函数通过检查输入数字的有效性,然后逐位转换为相应的中文字符,同时处理小数部分。博客中提供了函数的详细代码实现,并展示了如何使用该函数进行数字转换的示例。
摘要由CSDN通过智能技术生成

原创作者ACN站:3mile

如:550065转换成“五十五万零六十五”或“伍拾伍万零陆拾伍”

可作为UDF使用的。

NUM2CWORD($number,$vValue="")参数为0则只是大写,参数为1为古体

#include

Dim $numb = InputBox("", "")

$go = NUM2CWORD($numb)

$go1 = NUM2CWORD($numb, 1)

MsgBox(0, 0, "原始数字:" & $numb & @CRLF & "中文大写:" & $go & @CRLF & "中文古写:" & $go1)

Func NUM2CWORD($number, $vValue = "")

If Not IsNumber(Execute($number)) Then Return SetError(1, 0, "");如果输入的不是数字返回错误代码1

If $number > 999999999999 Then Return SetError(2, 0, "");如果大于千亿返回错误代码2

If $vValue < 0 Or $vValue = "" Then $vValue = 0

If $vValue = 1 Then

Dim $Cnum[10] = ["零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"]

Dim $Cwei[12] = ["", "拾", "佰", "仟", "万", "拾万", "佰万", "仟万", "亿", "拾亿", "佰亿", "仟亿"]

Else

Dim $Cnum[10] = ["零", "一", "二", "三", "四", "五", "六", "七", "八", "九"]

Dim $Cwei[12] = ["", "十", "百", "千", "万", "十万", "百万", "千万", "亿", "十亿", "百亿", "千亿"]

EndIf

Local $str, $xiao

If StringRegExp($number, '\d+\.\d+', 0) Then;判断是否有小数

$number_temp = StringRegExp($number, '(\d+)\.(\d+)', 3)

$number = $number_temp[0]

$number_xiao = $number_temp[1]

$number_xiao_wei = StringLen($number_xiao)

Else

$number_xiao_wei = 0

EndIf

$number_wei = StringLen($number)

If $number_xiao_wei > 0 Then;计算小数部分

For $x = 1 To $number_xiao_wei

$xiao &= $Cnum[StringMid($number_xiao, $x, 1)]

Next

EndIf

$n = $number_wei

For $i = 1 To $number_wei;计算整数部分

If StringMid($number, $i, 1) = 0 Then

If StringMid($number, $i - 1, 1) = 0 Then

$n -= 1

Else

$str &= $Cnum[0]

$n -= 1

EndIf

Else

$str &= $Cnum[StringMid($number, $i, 1)] & $Cwei[$n - 1]

$n -= 1

EndIf

Next

$wan = StringRegExp($str, '万', 3)

$yi = StringRegExp($str, '亿', 3)

If UBound($wan) > 1 Then $str = StringReplace($str, "万", "", UBound($wan) - 1)

If UBound($yi) > 1 Then $str = StringReplace($str, "亿", "", UBound($yi) - 1)

If StringRight($str, 1) = "零" Then $str = StringMid($str, 1, StringLen($str) - 1)

If StringLen($xiao) > 0 Then

If StringLen($str) > 0 Then

$str = $str & "点" & $xiao

Else

$str = "零点" & $xiao

EndIf

EndIf

Return $str

EndFunc ;==>NUM2CWORD

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值