NumberFormatInfo.NumberGroupSizes Property

Microsoft Silverlight will reach end of support after October 2021. Learn more.

Gets or sets the number of digits in each group to the left of the decimal in numeric values.

Namespace:  System.Globalization
Assembly:  mscorlib (in mscorlib.dll)

Syntax

'Declaration
Public Property NumberGroupSizes As Integer()
public int[] NumberGroupSizes { get; set; }

Property Value

Type: array<System.Int32[]
The number of digits in each group to the left of the decimal in numeric values. The default for InvariantInfo is a one-dimensional array with only one element, which is set to 3.

Exceptions

Exception Condition
ArgumentNullException

The property is being set to nulla null reference (Nothing in Visual Basic).

ArgumentException

The property is being set and the array contains an entry that is less than 0 or greater than 9.

-or-

The property is being set and the array contains an entry, other than the last entry, that is set to 0.

InvalidOperationException

The property is being set and the NumberFormatInfo object is read-only.

Remarks

Every element in the one-dimensional array must be an integer from 1 through 9. The last element can be 0.

The first element of the array defines the number of elements in the least significant group of digits immediately to the left of the NumberDecimalSeparator. Each subsequent element refers to the next significant group of digits to the left of the previous group. If the last element of the array is not 0, the remaining digits are grouped based on the last element of the array. If the last element is 0, the remaining digits are not grouped.

For example, if the array contains { 3, 4, 5 }, the digits are grouped similar to "55,55555,55555,55555,4444,333.00". If the array contains { 3, 4, 0 }, the digits are grouped similar to "55555555555555555,4444,333.00".

Examples

The following example demonstrates the effect of changing the NumberGroupSizes property.

Imports System.Globalization

Class Example
   Public Shared Sub Demo(ByVal outputBlock As System.Windows.Controls.TextBlock)
      ' Gets a NumberFormatInfo associated with the en-US culture.
      Dim nfi As NumberFormatInfo = New CultureInfo("en-US").NumberFormat

      ' Displays a value with the default separator (".").
      Dim myInt As Int64 = 123456789012345
      outputBlock.Text += String.Format(myInt.ToString("N", nfi)) & vbCrLf

      ' Displays the same value with different groupings.
      Dim mySizes1 As Integer() = {2, 3, 4}
      Dim mySizes2 As Integer() = {2, 3, 0}
      nfi.NumberGroupSizes = mySizes1
      outputBlock.Text += String.Format(myInt.ToString("N", nfi)) & vbCrLf
      nfi.NumberGroupSizes = mySizes2
      outputBlock.Text += String.Format(myInt.ToString("N", nfi)) & vbCrLf
   End Sub 
End Class 
' This example produces the following output.
'       123,456,789,012,345.00
'       12,3456,7890,123,45.00
'       1234567890,123,45.00
using System;
using System.Globalization;

class Example
{
   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
   {
      // Gets a NumberFormatInfo associated with the en-US culture.
      NumberFormatInfo nfi = new CultureInfo("en-US").NumberFormat;

      // Displays a value with the default separator (".").
      Int64 myInt = 123456789012345;
      outputBlock.Text += String.Format(myInt.ToString("N", nfi)) + "\n";

      // Displays the same value with different groupings.
      int[] mySizes1 = { 2, 3, 4 };
      int[] mySizes2 = { 2, 3, 0 };
      nfi.NumberGroupSizes = mySizes1;
      outputBlock.Text += String.Format(myInt.ToString("N", nfi)) + "\n";
      nfi.NumberGroupSizes = mySizes2;
      outputBlock.Text += String.Format(myInt.ToString("N", nfi)) + "\n";
   }
}
/* 
This code produces the following output.
   123,456,789,012,345.00
   12,3456,7890,123,45.00
   1234567890,123,45.00
*/

The following example displays a value using different NumberGroupSizes arrays.

Imports System.Globalization

Class Example

   Public Shared Sub Demo(ByVal outputBlock As System.Windows.Controls.TextBlock)

      ' Creates a new NumberFormatinfo.
      Dim myNfi As New NumberFormatInfo()

      ' Takes a long value.
      Dim myInt As Int64 = 123456789012345

      ' Displays the value with default formatting.
      outputBlock.Text &= String.Format("Default  " + ControlChars.Tab + ControlChars.Tab _
         + ":" + ControlChars.Tab + "{0}", myInt.ToString("N", myNfi)) & vbCrLf

      ' Displays the value with three elements in the GroupSize array.
      myNfi.NumberGroupSizes = New Integer() {2, 3, 4}
      outputBlock.Text &= String.Format("Grouping ( {0} ) & vbCrLf" + ControlChars.Tab + ":" _
         + ControlChars.Tab + "{1}", _
         PrintArraySet(myNfi.NumberGroupSizes), myInt.ToString("N", myNfi))

      ' Displays the value with zero as the last element in the GroupSize array.
      myNfi.NumberGroupSizes = New Integer() {2, 4, 0}
      outputBlock.Text &= String.Format("Grouping ( {0} ) & vbCrLf" + ControlChars.Tab + ":" _
         + ControlChars.Tab + "{1}", _
         PrintArraySet(myNfi.NumberGroupSizes), myInt.ToString("N", myNfi))
   End Sub


   Public Shared Function PrintArraySet(ByVal myArr() As Integer) As String
      Dim myStr As String = Nothing
      myStr = myArr(0).ToString()
      Dim i As Integer
      For i = 1 To myArr.Length - 1
         myStr += ", " + myArr(i).ToString()
      Next i
      Return myStr
   End Function
End Class

' This code produces the following output. 
' 
' Default                 :       123,456,789,012,345.00
' Grouping ( 2, 3, 4 )    :       12,3456,7890,123,45.00
' Grouping ( 2, 4, 0 )    :       123456789,0123,45.00 
using System;
using System.Globalization;
class Example
{

   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
   {

      // Creates a new NumberFormatinfo.
      NumberFormatInfo myNfi = new NumberFormatInfo();

      // Takes a long value.
      Int64 myInt = 123456789012345;

      // Displays the value with default formatting.
      outputBlock.Text += String.Format("Default  \t\t:\t{0}", myInt.ToString("N", myNfi)) + "\n";

      // Displays the value with three elements in the GroupSize array.
      myNfi.NumberGroupSizes = new int[] { 2, 3, 4 };
      outputBlock.Text += String.Format("Grouping ( {0} )\t:\t{1}",
         PrintArraySet(myNfi.NumberGroupSizes), myInt.ToString("N", myNfi)) + "\n";

      // Displays the value with zero as the last element in the GroupSize array.
      myNfi.NumberGroupSizes = new int[] { 2, 4, 0 };
      outputBlock.Text += String.Format("Grouping ( {0} )\t:\t{1}",
         PrintArraySet(myNfi.NumberGroupSizes), myInt.ToString("N", myNfi)) + "\n";
   }

   public static string PrintArraySet(int[] myArr)
   {
      string myStr = null;
      myStr = myArr[0].ToString();
      for (int i = 1; i < myArr.Length; i++)
         myStr += ", " + myArr[i].ToString();
      return (myStr);
   }
}
/*
This code produces the following output. 

Default                 :       123,456,789,012,345.00
Grouping ( 2, 3, 4 )    :       12,3456,7890,123,45.00
Grouping ( 2, 4, 0 )    :       123456789,0123,45.00
*/

Version Information

Silverlight

Supported in: 5, 4, 3

Silverlight for Windows Phone

Supported in: Windows Phone OS 7.1, Windows Phone OS 7.0

XNA Framework

Supported in: Xbox 360, Windows Phone OS 7.0

Platforms

For a list of the operating systems and browsers that are supported by Silverlight, see Supported Operating Systems and Browsers.