首页 UiBot教程 当前文章

UiBot 实现数字转字符串千分位保留两位小数的方法

xLeaves 发布于 2024年09月19日 15:12:18


UiBot 将数字转换为字符串表达形式,一般使用 CStr 或 Format 函数。

其中 CStr 只是简单的将数字按照字符串形式转换,而 Format 函数则提供了额外的控制能力,例如保留 N 位小数的写法:

TracePrint Format("%.2f", 3.1415926)

上述代码转换后,得到结果为 "3.14"


但是这两种方法,都不支持将数字转换为字符串,同时插入数字千分位符号(每隔3位数字添加一个逗号)的写法,这就为财务场景下的数字处理带来了麻烦。

下面提供一个函数,可以将数字转换为字符串,并保留2位小数,同时添加千分位符号:

// 格式化字符串,带千分位,固定保留两位小数
Function FormatNumber(num)
    // 将输入数据初步格式化为 2 位小数字符串
    Dim sType = type(num)
    if sType = "string"
        num = Format("%.2f", CNumber(Replace(num, ",", "")))
    elseif (sType = "int") or (sType = "float") or (sType = "Decimal")
        num = Format("%.2f", num)
    else
        throw "不支持的数据类型:" & sType
    end if
    // 添加千分位
    Dim arrText = Split(num, ".")
    Dim sInt = ""
    Dim iLen = Len(arrText[0])
    for i = iLen To 1 Step -1
        if (i <> iLen) and (((iLen - i) mod 3) = 0)
            sInt = sInt & ","
        end if
        sInt = sInt & Mid(arrText[0], i, 1)
    next
    return StrReverse(sInt) & "." & arrText[1]
End Function



// 输出结果:1,234,567.89
TracePrint FormatNumber("1234567.890123")

如果有不同的需求,简单修改这段代码即可,例如希望保留 4 位小数,只需要修改第六行和第八行,格式化时使用 %.4f 即可。


若无特殊声明,上述内容为本站原创,未经授权禁止转载!