Visual Basic 2005 Formatting numbers

While developing applications, we need to format numbers and vice versa. We use ToString method to connvert a value to the equivalent string and format the number at the same time. By converting a number to a string, we can display the number on forms and message boxes. The ToString method exposed by all data types.

To convert any value to a string we call the ToString method, without any arguments.

The ToString method, however, accepts an argument, and determines how the value will be formatted as a string. For example, we can format a number as currency and display it in two decimal digits.

Notice that ToString is a method, not a property. It returns a value, which we can assign to another variable or pass as arguments to a function like MsgBox, but the original value is not affected. The ToString method can also format a value if called with the format argument as shown below.


The formatString argument is a format specifier. This argument can be a specific character that corresponds to a predetermined format or a string of characters that have special meaning. We use standard format strings for the most common operations and picture strings to specify unusual formatting.

To format the value 3339.85 as a dollar amount, we can use the following standard currency format string.

Dim int As Single = 3339.85
Dim strlnt As String
strlnt = int.ToString("C")

or the following picture numeric format string

strlnt int.ToString('$###,###.00')

Both statements will format the value as '$3339.85'. The 'C' argument in the first example means currency and formats the numeric value as currency. The picture format string shown above is made up of literals and characters that have special meaning. The dollar sign has no special meaning and will appear as is. The # symbol is a digit placeholder. All # symbols will be replaced by numeric digits, starting from the right. If the number has fewer digits than specified in the string, the extra symbols to the left will be ignored. The comma tells the Format function to insert a comma between thousands. The period is the decimal point, which is followed by two more digit placeholders. Unlike the # sign, the 0 is a special place holder if there are not enough digits in the number for all the zeros you have specified, a 0 will appear in the place of the missing digits. If the original value had been 3339.8, for example, the last statement would have formatted it as $3339.80. If we used the # placeholder instead, then the string returned by the Format method would have a single decimal digit.

Standard Numeric Format Strings

VB 2005 recognizes the standard numeric format strings shown below.

C or cCurrency12345.67 .ToString('C') returns $12,345.67
E or eScientific format12345.67 .ToString('E') returns 1.234567E1.004
F or fFixed-point format12345.67 .ToString('F') returns 12345.67
N or nNumber format12345.67 .ToString('N') returns 12,345.67

The format character is followed by an integer. If present, the integer value specifies the number of decimal places that are displayed. The default accuracy is two decimal digits.

The 'C' format string causes the ToString method to return a string representing the number as a currency value. An integer following the 'C' determines the number of decimal places that are displayed. If no number is provided, two digits are shown after the decimal separator. The expression 2298.ToString ('c3') will return the string '$2,298.00', and the expression 2298.7788.ToString('c3') will return the string '$2,298.780'.

The fixed-point format returns a number with one or more decimal digits. The expression (245.5).ToString('f3') will return the value 245.500.

The optional parentheses around the value makes clear that the number has a decimal point. In VB, it is not required to supply these parentheses.