therainycat
therainycat

Reputation: 352

How does Float round when converting it into integer

If I have

(float)value = 10.50

and do

int new_value = (int)value

what rules will round number?

Upvotes: 4

Views: 1351

Answers (3)

guyzyl
guyzyl

Reputation: 387

When converted to integers, the fractional part of the float is dropped, meaning the float 10.5 will be converted to the integer 10, and the float -10.5 will be converted to the integer -10.

Upvotes: 1

Yu Hao
Yu Hao

Reputation: 122383

When a finite value of floating type is converted to an integer type, the fractional part is discarded (i.e., the value is truncated toward zero).

So in the case of -10.5, it's converted to -10.

C++11 4.9 Floating-integral conversions [conv.fpint]

An rvalue of a floating point type can be converted to an rvalue of an integer type. The conversion truncates; that is, the fractional part is discarded. The behavior is undefined if the truncated value cannot be represented in the destination type. [ Note: If the destination type is bool, see 4.12. —end note ]

Upvotes: 8

juanchopanza
juanchopanza

Reputation: 227418

The rule is quite simple: the number simply gets truncated to its integral part, in this case, to 10. The fractional part gets dropped entirely. The same applies to negative numbers: -10.5 would be converted to -10.

Upvotes: 3

Related Questions