--- Laurie Harper <[EMAIL PROTECTED]> wrote:

> Michael Vogt wrote:
<snip>
> > 
> > Is this a known problem or the expecxted behaviour?
> > What is the best way to work around it?
> 
> That's the expected behaviour. Floats in Java (as in most programming
> 
> languages) have limitted precision. 90.0f == 90.000001f by definition
> as 
> a result of the way floats are represented internally and how strings
> 
> are converted to float type. If float doesn't have sufficient
> precision 
> for your needs, use double instead.
> 
> If you need higher precision than even double supports, you'll need
> to 
> use java.math.BigDecimal to represent your values -- though note that
> 
> Validator may not support BigDecimal out of the box; you may need to 
> write custom validation rules for that (I haven't checked so YMMV).
> 
> L.
> 
Thanks Laurie.
It makes sense. Initially I was surprised that precision was this low
for a 32 bit type, but looking at it in hex 90.000001 = 0x055D4A81 *
10^-6 I see this is getting up there. 

I don't really need even float amount of precision, but I would like to
reject input that is out of the range  (e.g. latitude>90).

Validator does not have BigDecimalRange (my version is even missing
doubleRange) out of the box.

Maybe I'll try a simple length check (e.g. <=7) in conjunction with the
floatRange (Not sure how to do both, yet).

Thanks,







                
__________________________________ 
Yahoo! Mail - PC Magazine Editors' Choice 2005 
http://mail.yahoo.com

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to