Re: Simple math is giving me trouble
From: Kevin Spencer (kspencer_at_takempis.com)
Date: 10/18/04
- Next message: Kevin Spencer: "Re: Truncating Variables"
- Previous message: Al Smith: "Re: Framework Version Problem"
- In reply to: Justin: "Re: Simple math is giving me trouble"
- Messages sorted by: [ date ] [ thread ]
Date: Mon, 18 Oct 2004 09:23:31 -0400
> 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" <Justin@discussions.microsoft.com> wrote in message
news:A9C7AA06-2292-4148-AA86-BA585FAA8726@microsoft.com...
> 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:
> >
> > int Adults = int.Parse(Request.Cookies["qntyAdult"].Value);
> > double PriceAdult = Convert.ToDouble(myReader["RateAdult"]);
> > double AdultTotal = ((double) Adults) * Adult;
> >
> > ttlAdults.Text = Adults.ToString();
> >
> > .... // 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" <Justin@discussions.microsoft.com> wrote in message
> > news:B2D954C2-BB4D-40B6-8325-FD67EC85D0A2@microsoft.com...
> > > 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:
> > >
> > > int Adults = int.Parse(Request.Cookies["qntyAdult"].Value);
> > > decimal PriceAdult = Convert.ToDecimal(myReader["RateAdult"]);
> > >
> > > AdultTotal = Convert.ToDecimal(Adults) *
> > > Convert.ToDecimal(myReader["RateAdult"]);
> > >
> > > 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" <Justin@discussions.microsoft.com> wrote in message
> > > > news:73D20B07-A26E-4C4F-B27A-F8C142A51FF3@microsoft.com...
> > > > > 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 != "")
> > > > > {
> > > > > AdultTotal = int.Parse(Adults) *
> > Convert.ToInt32(myReader["RateAdult"]);
> > > > >
> > > > > ttlAdults.Text = 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.
> > > >
> > > >
> > > >
> >
> >
> >
- Next message: Kevin Spencer: "Re: Truncating Variables"
- Previous message: Al Smith: "Re: Framework Version Problem"
- In reply to: Justin: "Re: Simple math is giving me trouble"
- Messages sorted by: [ date ] [ thread ]
Relevant Pages
|