Those numbers must fall on the other side of the number. E.g., 75.81 ==> 75.81000000011 (etc) so you get the expected results. Mark Summers wrote: > I like to think that I'm reasonably aware of the limitations of floating > point (famous last words). > > To my mind, the ridiculousness (probably not a word) of the example is > highlighted by the fact that 75.81 and 75.83 work perfectly. > > Roberto Mansfield wrote: >> Internally, 75.82 can't be stored exactly, so 75.82 * 100 is probably >> 7581.999992 rather than the expected integer value of 7582. So intval is >> behaving properly. Sounds like you want intval(round($a)); >> >> >> >> tg-php@xxxxxxxxxxxxxxxxxxxxxx wrote: >> >>> Very weird and counter intuitive. Looking at the php manual, I see >>> this: >>> >>> Converting to integer from floating point: >>> >>> "When converting from float to integer, the number will be rounded >>> towards zero." >>> >>> But you'd think the multiplication would happen before the rounding. >>> >>> if you do: >>> $a = ceil(75.82 * 100); >>> >>> you should get the proper answer. >>> >>> This is what I used for testing: >>> >>> <?php >>> $x = 75.82; >>> $y = 100; >>> >>> echo "x is " . gettype($x) . "<br>\n"; >>> echo "y is " . gettype($y) . "<br>\n"; >>> >>> $a = ceil($x * $y); >>> >>> echo "a is " . gettype($a) . "<br>\n"; >>> >>> echo "intval(a) is " . gettype(intval($a)) . "<br>\n"; >>> >>> echo $a . " *** " . intval($a); >>> ?> >>> >>> Not sure that really helps, but seems to be some kind of order of >>> precedence issue. >>> >>> -TG >>> >>> = = = Original message = = = >>> >>> This sort of thing really isn't helpful... >>> >>> <?php >>> >>> $a = 75.82 * 100; >>> >>> echo intval($a); >>> >>> ?> >>> >>> >>> ___________________________________________________________ >>> Sent by ePrompter, the premier email notification software. >>> Free download at http://www.ePrompter.com. >>> >> >> -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php