# using string.fomat to round to two decimal places

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
###### Who is Participating?

x
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

IT Pro/DeveloperCommented:
>> Currently I get  CENTS = 0.0000
And what's the Total ? It looks right your code.
0
Author Commented:
I think it maybe that CENTS is a decimal variable?
0
IT Pro/DeveloperCommented:
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 Commented:
Yes thanks  but I just want the cents to be displayed as  12  and not 0.12
0
Commented:
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

Experts Exchange Solution brought to you by

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

IT Pro/DeveloperCommented:
>> 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 Commented:
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
IT Pro/DeveloperCommented:
Just check it before do the calculation
0
Commented:
Why not use the following
cents = (0.12).tostring.split(".")(1)
0
Commented:
> 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
Commented:
@GreenGhost,
Agreed but mugsey appears to be from Britain so it suggested that method.
0
Commented:
@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
###### It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
C#

From novice to tech pro — start learning today.