找回密码
 加入
搜索
查看: 2183|回复: 3

[AU3基础] 【已解决】如何将 123456 转换为 123,456.00 这样的格式

[复制链接]
发表于 2012-8-3 22:36:20 | 显示全部楼层 |阅读模式
本帖最后由 fxxl 于 2012-8-4 00:00 编辑

请问如何将 123456 转换为  123,456.00  这样的格式?

stringformat 似乎没有合适的格式,难道哟啊自己写转换 UDF 吗?

有没有什么简单的方法,请指点。



自己动手写了个简单的转换函数,算是解决了,如果有更简单的(例如内置的方法),还请指教。

顺便附上自己写的  UDF ,附件中的源代码,和下面贴出来的完全相同。 是否购买并无影响。



如果您认为代码对您有所帮助,请点击附件捐赠 1 块
$Money =12345678.1
MsgBox(0,"测试",ConverToCurrencyFormat($Money))


Func ConverToCurrencyFormat($Money)
    ;----------------------------
    ; 名称:ConverToMoneyFormat
    ; 参数:$Money : 待转换的金额
    ; 返回值:带 , 分隔的金额字符串,例如 123,456.01
    ; MakeBy : Fxxl
    ; time : 2012年8月3日
    ;----------------------------
    ;转换为 000.00 的格式
    $tmp = StringFormat("%.2f", $Money)

    ;求整数部分 mod 3 ,并取出余数长度的前 N 位字符
    $len = StringLen($tmp)-3
    $Mod = Mod($len,3)
    $MyConver = StringMid($tmp,1,$Mod)

    ; 对后续部分加上 ,分隔
    For $i = 1 to  ($len-$Mod)/3
        $MyConver = $MyConver & "," & StringMid($tmp, $Mod + ($i-1)*3+1,3)
    Next

    ; 补上小数点数位
    $MyConver = $MyConver & StringRight($tmp,3)

    ; 去掉多余的前导 ,
    If $Mod = 0 Then $MyConver=StringMid($MyConver,2,StringLen($MyConver))
    Return $MyConver
EndFunc

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2012-8-4 00:11:37 | 显示全部楼层
确实有更简单的方法,楼主参考论坛里一个正则的帖子,里面有现成的例子,然后用正则替换的函数

Ps:ipad码字真累
发表于 2012-8-4 02:36:50 | 显示全部楼层
楼上提到了正则表达式,自己一直也是一知半解的,
第一次来,要努力学习,花了2小时研究出来的,正好刚开号要2小时后才能发帖
顺便问下2楼的金钱有什么用的
;正则表达式学习
MsgBox(0,"测试:浮点->千分位货币",Format("1234567.890123"))

Func Format($sRs)
        ;无小数点的话,添加小数点
        If StringInStr ($sRs, ".") = 0 Then $sRs = $sRs & "."
        ;查找小数点,并在小数点前的千分位上添加','
        $sRs = StringRegExpReplace($sRs ,'\A(\d+)(\d{3})(\.)','$1,$2.')
        ;在每([数字][数字][数字],)前插入',',除非已经是字符串开头
        While 1
                $sRs = StringRegExpReplace($sRs,'\A(\d+)(\d{3}),','$1,$2,')
                If @Extended = 0 Then ExitLoop
        WEnd
        ;在小数位后补零,使小数位>=2位
        $sRs = $sRs & "00"
        ;把小数位0.00后面的替换为空
        $sRs = StringRegExpReplace($sRs,'\.(\d{1})(\d{1})(.*)','\.$1$2')
        Return $sRs
EndFunc
 楼主| 发表于 2012-8-4 11:31:17 | 显示全部楼层
感谢 3 楼的代码。 估计在调试正则表达式的时候,是花费了一番功夫的。

另外,如果你在这个论坛稍微逛一下,就会发现很多发代码者都是  售价 N 元 之类的(哪怕只是抄来的代码或者很小的功能。)

很快就会发现,没有金币无法下载需要的附件。 (这点比较讨厌)
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-30 03:21 , Processed in 0.099161 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表