2017-01-22 51 views
0

在Windows區域控制面板中有一個「數字分組」設置,該設置指示是否使用印度編號系統,其中千位分隔符字符將左邊的前三位數字分組的小數點後面,然後是每兩位數字,而較常見的分組則是小數點左邊的每三位數字組合在一起。如何獲取Windows「數字分組」設置

如何在VB6中獲得該設置?

或者,或者,確定何時使用印度編號系統的最佳方法是什麼?

+2

'GetLocaleInfoEx()'和'LOCALE_SGROUPING'的功能是 - 不知道對VB6但是。 –

+1

當你使用'FormatNumber()'函數時,你可以爲'GroupDigits'參數傳遞'vbUseDefault'(或省略它)。然後它應該根據當前的區域設置進行格式化。 – Bob77

回答

4
Private Const LOCALE_SGROUPING = &H10 
Private Const LOCALE_USER_DEFAULT = &H400 
Private Declare Function GetLocaleInfo Lib "kernel32" Alias "GetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String, ByVal cchData As Long) as Long 

Private Function Grouping() As String 
    Dim retVal As Long, sBuf As String 
    sBuf = String(255, vbNullChar) 
    retVal = GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SGROUPING, sBuf, Len(sBuf)) 
    Grouping = Left$(sBuf, retVal - 1) 
End Function 

舉例:將輸出:3;0爲123.456,789和3;2;0爲12.34.56,789

0

由於Bob77在評論說,爲什麼不乾脆讓FormatNumber爲你做?它將應用來自區域設置的數字分組。像這樣

MsgBox(FormatNumber(123456, , , , vbUseDefault)) 

「空碼」 - 我還沒有嘗試過這個自己

+0

謝謝,但這是一個任意的精度程序,它可以計算出大多數程序可以處理的精度高於15位的精確數字,並將它們作爲文本格式返回,看起來像一個數字。示例結果:「1,234,567,891.2345678912」。如果你在大多數程序中試圖用數字來做到這一點,它將被截斷爲1,234,567,891.23456(15位有效數字)。所以,FormatNumber不起作用,因爲任何VB6認爲是數字數據類型都不起作用。該程序與文本字符串進行數學運算。 –

相關問題