As Kostya already commented, this is rounding error. The error is well
within the acceptable range for IEEE-754 floating point
multiplication, since the inaccuracy is still only 2 parts in 10^13.

Still, it is a little embarrassing, considering that Python also
implements IEEE-754, and gets it exactly right: 100.0 * 0.0254 yields
2.54. I wonder which rounding modes (there are 5 different choices in
IEEE-754) Python and Android (resp.) chose to implement.

In fact, a few casual Google searches, such as "floating point
rounding Android", yield nothing about what choices they made when
implementing IEEE-754. It doesn't even yield who is responsible for
this: the OEM or the authors of Android itself.

BTW: I didn't check too thoroughly, but it looks to me like despite
appearances, 0.254 is not exactly representable in binary -- it has
lots of trailing zeros followed by yet more digits.

On Sep 3, 2:59 pm, Churky <[email protected]> wrote:
> When Performing a division or multiplication. The value does not equal
> to the arithmetic.
> example i have:
>
> double value = 100 * .0254;
>
> in real life equals = 2.5908
>
> While android calculates it to: 2.5907999999999998 which is wrong.
>
> I have verified this in the emulator using multiple machines, and
> multiple version of android.

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to