objective c - Rounding when [int] = [float] + [int] (Obj-C, iOS?) -
in case:
float = 0.99999f; int b = 1000; int c = + b; in result c = 1001. discovered happens because b converted float (specific ios), a + b doesn't have enough precision 1000.9999 , (why?) rounded higher value. if a 0.999f c = 1000 - theoretically correct behavior.
so question why float number rounded higher value? behavior (or convention) described?
i tested on iphone simulator, apple llvm 4.2 compiler.
in int c = + b, integer b converted float first, 2 floating point numbers added, , result truncated integer.
the default floating point rounding mode fe_tonearest, means result of addition
0.99999f + 1000f is nearest number can represented float, , number 1001f. float truncated integer c = 1001.
if change rounding mode
#include <fenv.h> fesetround(fe_downward); then result of addition rounded downward (approximately 1000.99993f) , c = 1000.
Comments
Post a Comment