0.1 + 0.2 // return 0.30000000000000004 4%0.1 // return 0.09999999999999978
http://jsbin.com/oHISAfU/1/edit (Example) In C the math.h library fmod function
printf("%f", fmod(4.0,0.1)); // print 0.100000
http://ideone.com/RG5Wyv (Example) And in Spotlight (search feature in the Mac OS X ~ I already submit bug report) that support math operation
4%0.1 = 0.1
Asked By : Paul Brewczynski
Answered By : Ilmari Karonen
printf("%.20f", fmod(4.0,0.1));
prints 0.09999999999999978351. Specifically, the only numbers that binary floating point can represent exactly are dyadic fractions of the form a / 2b, where a and b are integers. Even more specifically, for IEEE single precision floating point numbers, a must be between -224 and 224 and b must, in effect, be between -151 and 104. (Or at least approximately so; there are some tricky special cases like denormalized numbers.) For double precision floats, the ranges are wider, but even so, a fraction like 1 / 10 cannot be represented exactly, because the denominator is not a power of two.
Best Answer from StackOverflow
Question Source : http://cs.stackexchange.com/questions/13810 Ask a Question Download Related Notes/Documents