Re: why does 69.99*100=6998?
- From: Norman Peelman <npeelman@xxxxxxxxxx>
- Date: Mon, 04 Feb 2008 18:35:51 -0500
The Natural Philosopher wrote:
Betikci Boris wrote:On Feb 1, 5:59 pm, The Natural Philosopher <a...@xxx> wrote:The question says it all.
I have an input box, which I fill in with a price.
IOt gets passed to the main form as a variable, then shoved into an SQL
field vue a print '%d' statement where the argument is $price*100.
For some reaosn, this particular value goes to 6998.
If I update hee database manually to 6999, it displays as 69.99.
If I enter 69.999 it updates as 6999..not 69999
I must be doing something really dumb here..
it's simply a rounding error! because type float is weak while storing
the numbers with floating points you should store values using type
double or you can divide each part of the number ex. for 89.98 as 89
and 98 you could do this using php's bundled string manipulation
functions..
No,what it is is a fundamental flaw in the thinking of whoever designed the language, to consider that converting from a float to an integer would be a matter of TRUNCATION rather than rounding.
How does the language know that you want your result rounded. You are failing to understand that even though your input is (string)69.99, the second you convert it to a float you are losing precision. PHP doesn't know what your intentions are with the data. PHP has no way of knowing that you want a rounded result unless you tell it so... nor does it have any way of knowing that the original value was 69.99.
round($float [,$precision])
check round function on php.net for a lot of examples.
--
Norman
Registered Linux user #461062
.
- Follow-Ups:
- Re: why does 69.99*100=6998?
- From: The Natural Philosopher
- Re: why does 69.99*100=6998?
- References:
- why does 69.99*100=6998?
- From: The Natural Philosopher
- Re: why does 69.99*100=6998?
- From: Betikci Boris
- Re: why does 69.99*100=6998?
- From: The Natural Philosopher
- why does 69.99*100=6998?
- Prev by Date: Re: Freetype2 support didn't work, but no errors
- Next by Date: Re: Bit Testing in PHP ?
- Previous by thread: Re: why does 69.99*100=6998?
- Next by thread: Re: why does 69.99*100=6998?
- Index(es):
Relevant Pages
|
Loading