2008/5/3 Alain Williams <[EMAIL PROTECTED]>: > On Fri, May 02, 2008 at 01:03:45PM -0700, Todd Ruth wrote: > > On Fri, 2008-05-02 at 11:41 -0700, Rasmus Lerdorf wrote: > > > Stefan Walk wrote: > > > > And you'll quickly see that the "cast to string before comparision" is > a > > > > bad idea, because: > > > > $ php -dprecision=1 -r 'var_dump((string)1.4 == (string)1.1);' > > > > bool(true) > > > > > > > > Having display settings affect comparisions seems like a really bad > idea > > > > to me ;) > > > > > > Yup, it would be a fatal flaw in the language if that ever came to be. > > > > > > -Rasmus > > > > Most people don't care about floating numbers beyond a certain > > number of digits. If precision were the only ini setting that > > gave us an idea of how much the person cared, I think it would > > be fair to use the setting or introduce a new setting. As it > > happens, there is another setting. How would you feel about > > this returning true: > > > > php -dserialize_precision=1 -r 'var_dump(1.4 == 1.1);' > > > > Setting serialize_precision to 1 is a very strong statement of > > not caring about those digits. Personally, I don't care about > > more than about 6 digits and I don't do much math, so I could > > set it to 8 digits and be happy. Not everyone has the luxury > > of controlling ini settings, but for those that do, this > > would be much nicer than having > > Hmmm, what you are talking about is implying: > > $a == $b > > be implemented as: > > abs($a - $b) < (max(abs($a), abs($b)) / EPSILON) > > Where EPSILON is some sort of accuracy factor. It might be > possible to implement this easier/faster at a machine code level. > > The trouble is that doing something like this would be global and > might mess up some code written elsewhere. Mind you: any programmer > going '$a == $b' on true floating point has got to expect rubbish. > > This is making things easier for the naive/novice programmer. In this case > I don't think that it realy helps since the naive programmer isn't > going to have a clue about choosing a good value for EPSILON. > > Best leave it the way that it is.
What about introducing a "money" or "currency" numeric type which guarantees say accuracy to 8DP? -- ----- Richard Quadling Zend Certified Engineer : http://zend.com/zce.php?c=ZEND002498&r=213474731 "Standing on the shoulders of some very clever giants!" -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php