Solved

# using string.fomat to round to two decimal places

Posted on 2009-07-15
660 Views
I am splitting a decimal value into dollars and cents

Dollars = Math.Truncate(Total);
Cents = Total - Dollars;

How can I use string.format to get the Cents variable to display just two digits so

DOLLARS = 1343
CENTS = 00

Currently I get  CENTS = 0.0000
0
Question by:mugsey
• 4
• 3
• 3
• +1

LVL 48

Expert Comment

ID: 24858581
>> Currently I get  CENTS = 0.0000
And what's the Total ? It looks right your code.
0

Author Comment

ID: 24858602
I think it maybe that CENTS is a decimal variable?
0

LVL 48

Assisted Solution

jpaulino earned 100 total points
ID: 24858621
If you have defined the variables as decimal (or double) and the Total is something like 1343.12 then you will have 0.12 in the Cents.
0

Author Comment

ID: 24858628
Yes thanks  but I just want the cents to be displayed as  12  and not 0.12
0

LVL 29

Accepted Solution

Göran Andersson earned 400 total points
ID: 24858633
You can use formatting to scale a number down, but not up.

Scale the cents value up by two decimals when you calculate it:

Cents = Math.Round((Total - Dollars) * 100);

Then you can use the format string "00" if you want to display it as two digits:

string price = String.Format("{0} dollars and {1:00} cents", Dollars, Cents);
0

LVL 48

Expert Comment

ID: 24858666
>> Yes thanks  but I just want the cents to be displayed as  12  and not 0.12
That's another point and you can do as GreenGhost suggested
0

Author Comment

ID: 24858687
Thanks but if I use the method above and pass in zero I get the error

Index (zero based) must be greater than or equal to zero and less than the size of the argument list
0

LVL 48

Expert Comment

ID: 24858710
Just check it before do the calculation
0

LVL 83

Expert Comment

ID: 24859278
Why not use the following
cents = (0.12).tostring.split(".")(1)
0

LVL 29

Expert Comment

ID: 24861389
> Why not use the following
> cents = (0.12).tostring.split(".")(1)

You would have to specify the culture used for formatting the value into a string. Some cultures format that value into "0,12", which would make the split fail.
0

LVL 83

Expert Comment

ID: 24867279
@GreenGhost,
Agreed but mugsey appears to be from Britain so it suggested that method.
0

LVL 29

Expert Comment

ID: 24868210
@CodeCruiser,

Yes, but his server might be hosted in Sweden...

Besides, other people will also take advice from the answers, and they can live anywhere. They may also use it in a windows application, then the culture is dependent on who's running the program, which might come as a nasty surprise...

That's why I wanted to clarify the possible culture issues with the suggestion. :)
0

## Featured Post

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

### Suggested Solutions

Creating an analog clock UserControl seems fairly straight forward.  It is, after all, essentially just a circle with several lines in it!  Two common approaches for rendering an analog clock typically involve either manually calculating points with…
This article is for Object-Oriented Programming (OOP) beginners. An Interface contains declarations of events, indexers, methods and/or properties. Any class which implements the Interface should provide the concrete implementation for each Inter…
This Micro Tutorial hows how you can integrate  Mac OSX to a Windows Active Directory Domain. Apple has made it easy to allow users to bind their macs to a windows domain with relative ease. The following video show how to bind OSX Mavericks to …
Nobody understands Phishing better than an anti-spam company. That’s why we are providing Phishing Awareness Training to our customers. According to a report by Verizon, only 3% of targeted users report malicious emails to management. With compan…