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 即可。