Форматирование чисел с единичными символами "k" и "m" - PullRequest
1 голос
/ 23 февраля 2011

В VBScript я ищу функцию, которая будет возвращать числа в формате 1000 или, если 1000 000 или больше, в миллионах следующим образом:

x = 100,000 then return 100k
y = 500,000 then return 500k
z = 5,000,000 then return 5m
q = 25,000,000 then return 25m 

Где x, y, z, q - целые числа.

Ответы [ 2 ]

1 голос
/ 23 февраля 2011

@ van: рабочий пример -

Option Explicit

Function NumFormat(ByRef iNumber, ByRef blnFixed)
    Dim sNumber

    If iNumber >= 1000000 Then
        If NOT blnFixed Then
            sNumber = (iNumber / 1000000) & "m"
        Else
            sNumber = Fix(iNumber / 1000000) & "m"
        End If
    ElseIf iNumber >= 100000 Then
        If NOT blnFixed Then
            sNumber = (iNumber / 1000) & "k"
        Else
            sNumber = Fix(iNumber / 1000) & "k"
        End If
    ElseIf iNumber >= 10000 Then
        If NOT blnFixed Then
            sNumber = (iNumber / 1000) & "k"
        Else
            sNumber = Fix(iNumber / 1000) & "k"
        End If
    ElseIf iNumber >= 1000 Then
        If NOT blnFixed Then
            sNumber = (iNumber / 1000) & "k"
        Else
            sNumber = Fix(iNumber / 1000) & "k"
        End If
    End If

    NumFormat = sNumber
End Function

Response.Write NumFormat(56120000, True) & "<br>"
Response.Write NumFormat(25050000, False) & "<br>"
Response.Write NumFormat(255000, False) & "<br>"
Response.Write NumFormat(9009, True) & "<br>"
Response.Write NumFormat(3000, False) & "<br>"
0 голосов
/ 23 февраля 2011
Option Explicit

Public Function convertAmount(a)
    a = CStr(a)
    Dim re : Set re = new RegExp

    ' Replace millions
    re.Pattern ="(,\d{3}){2}$"
    a = re.replace(a, "m")
    ' Replace kilo's
    re.Pattern =",\d{3}$"
    a = re.replace(a, "k")

    convertAmount = a
End Function

' Testcode
MsgBox convertAmount("1,234,567")

Может быть, это не сработает для целых чисел, потому что я никогда не видел целых чисел с форматированием разделителя тысяч.Просто поместите знак вопроса в регулярных выражениях за запятой, и он также будет работать для чисел без тысяч разделителей.Как: "(,?\d{3}){2}$" и ",?\d{3}$"

Ограничения: Нет округления, только объединение результатов

...