Velocity Reviews > Simple math is giving me trouble

# Simple math is giving me trouble

=?Utf-8?B?SnVzdGlu?=
Guest
Posts: n/a

 10-14-2004
I am trying to add dollar amounts together and add sales tax but everthing
after the decimal point is being cut off in the dollar amounts. Here is my
code:

{

}

if (Children != "")
{

ttlChildren.Text = Children;
}

double Tax = (AdultTotal + ChildTotal ) * (.06);
double TotalCost = (AdultTotal + ChildTotal );

txtTotal.Text = TotalCost.ToString() + " " + Tax.ToString();

The Adults and Children variables are ints and contain a quantity amount
from a form. The rate is grabbed from the database this is where the problem
is everything after the decimal in the rates are being chopped off.

I know I am probably using the wrong types. What is correct way to do this?

Thank you very much, Justin.

Lloyd Dupont
Guest
Posts: n/a

 10-14-2004
I don't really understand your question... when you speak of rates you mean
the tax?
anyway, double is good for numerical simulation but bad for accounting
I would advice you to use the decimal type

"Justin" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
>I am trying to add dollar amounts together and add sales tax but everthing
> after the decimal point is being cut off in the dollar amounts. Here is my
> code:
>
> {
>
> }
>
> if (Children != "")
> {
> ChildTotal = int.Parse(Children) * Convert.ToInt32(myReader["RateChild"]);
>
> ttlChildren.Text = Children;
> }
>
> double Tax = (AdultTotal + ChildTotal ) * (.06);
> double TotalCost = (AdultTotal + ChildTotal );
>
> txtTotal.Text = TotalCost.ToString() + " " + Tax.ToString();
>
> The Adults and Children variables are ints and contain a quantity amount
> from a form. The rate is grabbed from the database this is where the
> problem
> is everything after the decimal in the rates are being chopped off.
>
> I know I am probably using the wrong types. What is correct way to do
> this?
>
> Thank you very much, Justin.

ESPN Lover
Guest
Posts: n/a

 10-14-2004
Int's don't carry any information beyond the decimal place. You could use
doubles or floats. Also you should add your Tax into the TotalCost to come
up with the GrandTotal.

"Justin" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> I am trying to add dollar amounts together and add sales tax but everthing
> after the decimal point is being cut off in the dollar amounts. Here is my
> code:
>
> {
>
> }
>
> if (Children != "")
> {
> ChildTotal = int.Parse(Children) * Convert.ToInt32(myReader["RateChild"]);
>
> ttlChildren.Text = Children;
> }
>
> double Tax = (AdultTotal + ChildTotal ) * (.06);
> double TotalCost = (AdultTotal + ChildTotal );
>
> txtTotal.Text = TotalCost.ToString() + " " + Tax.ToString();
>
> The Adults and Children variables are ints and contain a quantity amount
> from a form. The rate is grabbed from the database this is where the

problem
> is everything after the decimal in the rates are being chopped off.
>
> I know I am probably using the wrong types. What is correct way to do

this?
>
> Thank you very much, Justin.

=?Utf-8?B?SnVzdGlu?=
Guest
Posts: n/a

 10-15-2004
I have tried using decimal, double and float but I get an error when I try to
multiply using these types, it wants to convert the numbers to ints. Heres
the new code:

I can't believe something so simple has turned out to be difficult,
ahhhhhhh!!!!!!!

"ESPN Lover" wrote:

> Int's don't carry any information beyond the decimal place. You could use
> doubles or floats. Also you should add your Tax into the TotalCost to come
> up with the GrandTotal.
>
>
> "Justin" <(E-Mail Removed)> wrote in message
> news:(E-Mail Removed)...
> > I am trying to add dollar amounts together and add sales tax but everthing
> > after the decimal point is being cut off in the dollar amounts. Here is my
> > code:
> >
> > if (Adults != "")
> > {
> >
> > }
> >
> > if (Children != "")
> > {
> > ChildTotal = int.Parse(Children) * Convert.ToInt32(myReader["RateChild"]);
> >
> > ttlChildren.Text = Children;
> > }
> >
> > double Tax = (AdultTotal + ChildTotal ) * (.06);
> > double TotalCost = (AdultTotal + ChildTotal );
> >
> > txtTotal.Text = TotalCost.ToString() + " " + Tax.ToString();
> >
> > The Adults and Children variables are ints and contain a quantity amount
> > from a form. The rate is grabbed from the database this is where the

> problem
> > is everything after the decimal in the rates are being chopped off.
> >
> > I know I am probably using the wrong types. What is correct way to do

> this?
> >
> > Thank you very much, Justin.

>
>
>

Kevin Spencer
Guest
Posts: n/a

 10-15-2004
Hi Justin,

When using C#, it isn't necessary to use the Convert class to convert
integers to other numeric data types. Most of them can be implicitly cast.
Example:

.... // Same for Children

double Tax = (AdultTotal + ChildTotal) * 0.06d; // Shouldn't need the "d"
but it's a good example
double TotalCost = AdultTotal + ChildTotal; // Same data type, no
casting necessary

txtTotal.Text = TotalCost.ToString("0.00") + " " + Tax.ToString("0.00");

Note the use of the formatting strings in the final statement. If you want 2
decimal places in the final string, you need to specify that there. Also,
mixing up the use of Decimal and Double isn't necessary or good. A Double
can hold a lot more precision than a decimal, so if you have doubts, use all
doubles. In any case, use all somethings (decimals, doubles, whatever floats

--
HTH,
Kevin Spencer
..Net Developer
Microsoft MVP
I get paid good money to
solve puzzles for a living

"Justin" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> I have tried using decimal, double and float but I get an error when I try

to
> multiply using these types, it wants to convert the numbers to ints. Heres
> the new code:
>
>
>
> I can't believe something so simple has turned out to be difficult,
> ahhhhhhh!!!!!!!
>
> "ESPN Lover" wrote:
>
> > Int's don't carry any information beyond the decimal place. You could

use
> > doubles or floats. Also you should add your Tax into the TotalCost to

come
> > up with the GrandTotal.
> >
> >
> > "Justin" <(E-Mail Removed)> wrote in message
> > news:(E-Mail Removed)...
> > > I am trying to add dollar amounts together and add sales tax but

everthing
> > > after the decimal point is being cut off in the dollar amounts. Here

is my
> > > code:
> > >
> > > if (Adults != "")
> > > {

> > >
> > > }
> > >
> > > if (Children != "")
> > > {
> > > ChildTotal = int.Parse(Children) *

> > >
> > > ttlChildren.Text = Children;
> > > }
> > >
> > > double Tax = (AdultTotal + ChildTotal ) * (.06);
> > > double TotalCost = (AdultTotal + ChildTotal );
> > >
> > > txtTotal.Text = TotalCost.ToString() + " " + Tax.ToString();
> > >
> > > The Adults and Children variables are ints and contain a quantity

amount
> > > from a form. The rate is grabbed from the database this is where the

> > problem
> > > is everything after the decimal in the rates are being chopped off.
> > >
> > > I know I am probably using the wrong types. What is correct way to do

> > this?
> > >
> > > Thank you very much, Justin.

> >
> >
> >

=?Utf-8?B?SnVzdGlu?=
Guest
Posts: n/a

 10-15-2004
Thank you very much!

For the sake of learning what the (double) do in ((double) Adults)?

Thanks, Justin.

"Kevin Spencer" wrote:

> Hi Justin,
>
> When using C#, it isn't necessary to use the Convert class to convert
> integers to other numeric data types. Most of them can be implicitly cast.
> Example:
>
>
>
> .... // Same for Children
>
> double Tax = (AdultTotal + ChildTotal) * 0.06d; // Shouldn't need the "d"
> but it's a good example
> double TotalCost = AdultTotal + ChildTotal; // Same data type, no
> casting necessary
>
> txtTotal.Text = TotalCost.ToString("0.00") + " " + Tax.ToString("0.00");
>
> Note the use of the formatting strings in the final statement. If you want 2
> decimal places in the final string, you need to specify that there. Also,
> mixing up the use of Decimal and Double isn't necessary or good. A Double
> can hold a lot more precision than a decimal, so if you have doubts, use all
> doubles. In any case, use all somethings (decimals, doubles, whatever floats
>
> --
> HTH,
> Kevin Spencer
> ..Net Developer
> Microsoft MVP
> I get paid good money to
> solve puzzles for a living
>
> "Justin" <(E-Mail Removed)> wrote in message
> news:(E-Mail Removed)...
> > I have tried using decimal, double and float but I get an error when I try

> to
> > multiply using these types, it wants to convert the numbers to ints. Heres
> > the new code:
> >
> >
> >
> > I can't believe something so simple has turned out to be difficult,
> > ahhhhhhh!!!!!!!
> >
> > "ESPN Lover" wrote:
> >
> > > Int's don't carry any information beyond the decimal place. You could

> use
> > > doubles or floats. Also you should add your Tax into the TotalCost to

> come
> > > up with the GrandTotal.
> > >
> > >
> > > "Justin" <(E-Mail Removed)> wrote in message
> > > news:(E-Mail Removed)...
> > > > I am trying to add dollar amounts together and add sales tax but

> everthing
> > > > after the decimal point is being cut off in the dollar amounts. Here

> is my
> > > > code:
> > > >
> > > > if (Adults != "")
> > > > {

> > > >
> > > > }
> > > >
> > > > if (Children != "")
> > > > {
> > > > ChildTotal = int.Parse(Children) *

> > > >
> > > > ttlChildren.Text = Children;
> > > > }
> > > >
> > > > double Tax = (AdultTotal + ChildTotal ) * (.06);
> > > > double TotalCost = (AdultTotal + ChildTotal );
> > > >
> > > > txtTotal.Text = TotalCost.ToString() + " " + Tax.ToString();
> > > >
> > > > The Adults and Children variables are ints and contain a quantity

> amount
> > > > from a form. The rate is grabbed from the database this is where the
> > > problem
> > > > is everything after the decimal in the rates are being chopped off.
> > > >
> > > > I know I am probably using the wrong types. What is correct way to do
> > > this?
> > > >
> > > > Thank you very much, Justin.
> > >
> > >
> > >

>
>
>

Kevin Spencer
Guest
Posts: n/a

 10-18-2004
> For the sake of learning what the (double) do in ((double) Adults)?

It's a C# cast. Since Adults is an integer, it casts it as a double, which
is fine, as a double is larger in memory and more precise than an integer.

The rules for doing math can be kind of tricky. While you can often do math
on some different numeric data types without casting, the data type of the
result may or may not be the type you expect. It's therefore a good practice
to explicitly cast all operands to the same data type (the one you need for
a result) prior to operating on them.

--
HTH,
Kevin Spencer
..Net Developer
Microsoft MVP
I get paid good money to
solve puzzles for a living

"Justin" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> Thank you very much!
>
> For the sake of learning what the (double) do in ((double) Adults)?
>
> Thanks, Justin.
>
> "Kevin Spencer" wrote:
>
> > Hi Justin,
> >
> > When using C#, it isn't necessary to use the Convert class to convert
> > integers to other numeric data types. Most of them can be implicitly

cast.
> > Example:
> >
> >
> >
> > .... // Same for Children
> >
> > double Tax = (AdultTotal + ChildTotal) * 0.06d; // Shouldn't need the

"d"
> > but it's a good example
> > double TotalCost = AdultTotal + ChildTotal; // Same data type, no
> > casting necessary
> >
> > txtTotal.Text = TotalCost.ToString("0.00") + " " + Tax.ToString("0.00");
> >
> > Note the use of the formatting strings in the final statement. If you

want 2
> > decimal places in the final string, you need to specify that there.

Also,
> > mixing up the use of Decimal and Double isn't necessary or good. A

Double
> > can hold a lot more precision than a decimal, so if you have doubts, use

all
> > doubles. In any case, use all somethings (decimals, doubles, whatever

floats
> > your boat), to make life (and your code) much simpler.
> >
> > --
> > HTH,
> > Kevin Spencer
> > ..Net Developer
> > Microsoft MVP
> > I get paid good money to
> > solve puzzles for a living
> >
> > "Justin" <(E-Mail Removed)> wrote in message
> > news:(E-Mail Removed)...
> > > I have tried using decimal, double and float but I get an error when I

try
> > to
> > > multiply using these types, it wants to convert the numbers to ints.

Heres
> > > the new code:
> > >
> > >
> > >
> > > I can't believe something so simple has turned out to be difficult,
> > > ahhhhhhh!!!!!!!
> > >
> > > "ESPN Lover" wrote:
> > >
> > > > Int's don't carry any information beyond the decimal place. You

could
> > use
> > > > doubles or floats. Also you should add your Tax into the TotalCost

to
> > come
> > > > up with the GrandTotal.
> > > >
> > > >
> > > > "Justin" <(E-Mail Removed)> wrote in message
> > > > news:(E-Mail Removed)...
> > > > > I am trying to add dollar amounts together and add sales tax but

> > everthing
> > > > > after the decimal point is being cut off in the dollar amounts.

Here
> > is my
> > > > > code:
> > > > >
> > > > > if (Adults != "")
> > > > > {

> > > > >
> > > > > }
> > > > >
> > > > > if (Children != "")
> > > > > {
> > > > > ChildTotal = int.Parse(Children) *

> > > > >
> > > > > ttlChildren.Text = Children;
> > > > > }
> > > > >
> > > > > double Tax = (AdultTotal + ChildTotal ) * (.06);
> > > > > double TotalCost = (AdultTotal + ChildTotal );
> > > > >
> > > > > txtTotal.Text = TotalCost.ToString() + " " + Tax.ToString();
> > > > >
> > > > > The Adults and Children variables are ints and contain a quantity

> > amount
> > > > > from a form. The rate is grabbed from the database this is where

the
> > > > problem
> > > > > is everything after the decimal in the rates are being chopped

off.
> > > > >
> > > > > I know I am probably using the wrong types. What is correct way to

do
> > > > this?
> > > > >
> > > > > Thank you very much, Justin.
> > > >
> > > >
> > > >

> >
> >
> >