*This is an unofficial snapshot of the ISO/IEC JTC1 SC22 WG21
Core Issues List revision 115d.
See http://www.open-std.org/jtc1/sc22/wg21/ for the official
list.*

2024-10-26

#### 566.
Conversion of negative floating point values to integer type

**Section: **7.3.11 [conv.fpint]
**Status: **NAD
**Submitter: **Seungbeom Kim
**Date: **13 March 2006

Section 7.3.11 [conv.fpint] paragraph 1 states:

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.

Here, the concepts of “truncation” and
“fractional part” seem to be used without precise
definitions. When -3.14 is converted into an integer, is the
truncation toward zero or away from zero? Is the fractional part -0.14
or 0.86? The standard seem to give no clear answer to these.

Suggested resolution:

Replace “truncates” with “truncates toward
zero.”

Replace “the fractional part” with “the
fractional part (where that of `x` is defined
as `x-floor(x)` for nonnegative `x`
and `x-ceiling(x)` for negative `x`);” there
should be a better wording for this, or the entire statement
“that is, the fractional part is discarded” can be removed,
once the meaning of “truncation” becomes unambiguous as
above.

**Rationale (October, 2006):**

The specification is clear enough: “fractional part”
refers to the digits following the decimal point, so that -3.14
converted to `int` becomes -3.