Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Converting Decimal to string with non-default format

Tags:

c#

decimal

I need to convert decimal to string, in this rulers:

120.00 - "120"
120.01 - "120.01"
120.50 - "120.50"
like image 356
user1046047 Avatar asked Nov 14 '11 17:11

user1046047


2 Answers

You can use the decimal.ToString override to specify a formatting.

decimal amount = 120.00m;
string str = amount.ToString("0.00");

This can also be used when using String.Format.

Console.WriteLine("{0:0.00}", amount); 

In the case of your first rule, it cannot be done on one line.

decimal amount = 120.00m;
string str = amount.ToString("0.00").Replace(".00", String.Empty);
like image 70
Joshua Avatar answered Sep 24 '22 06:09

Joshua


There are different overloads for decimal.ToString based on what formatting you want.

Example

decimal d = 5.00
Console.WriteLine(d.ToString("C")); // for currency

See below for other overloads... specifier is what you put into the ToString(specifier)

MSDN Documentation on Decimal.ToString

decimal value = 16325.62m; string specifier;

// Use standard numeric format specifiers.
specifier = "G";
Console.WriteLine("{0}: {1}", specifier, value.ToString(specifier));
// Displays:    G: 16325.62
specifier = "C";
Console.WriteLine("{0}: {1}", specifier, value.ToString(specifier));
// Displays:    C: $16,325.62
specifier = "E04";
Console.WriteLine("{0}: {1}", specifier, value.ToString(specifier));
// Displays:    E04: 1.6326E+004
specifier = "F";
Console.WriteLine("{0}: {1}", specifier, value.ToString(specifier));
// Displays:    F: 16325.62
specifier = "N";
Console.WriteLine("{0}: {1}", specifier, value.ToString(specifier));
// Displays:    N: 16,325.62
specifier = "P";
Console.WriteLine("{0}: {1}", specifier, (value/10000).ToString(specifier));
// Displays:    P: 163.26 %

// Use custom numeric format specifiers.
specifier = "0,0.000";
Console.WriteLine("{0}: {1}", specifier, value.ToString(specifier));
// Displays:    0,0.000: 16,325.620
specifier = "#,#.00#;(#,#.00#)";
Console.WriteLine("{0}: {1}", specifier, (value*-1).ToString(specifier));
// Displays:    #,#.00#;(#,#.00#): (16,325.62)
like image 44
Kellen Stuart Avatar answered Sep 24 '22 06:09

Kellen Stuart