**Truncating conversion**implies that any type of fractional part is discarded, so that e.g. 3.9 is converted to 3. Such a conversion is the default floating to integer conversion in C in the sense that it is applied whenever before a value of a floating-suggest form (float, double or lengthy double) is to be converted to an integer type. Tbelow are specific rules which define as soon as such a conversion takes area. Here we will certainly only state that convariation occurs in an assignment choose i = x wright here i is of an integer kind and x is of a floating-suggest form. Conversion also occurs, of course, in explicit kind casts choose (int) x

**Rounding conversion**indicates that we obtain the integer which is nearemainder to the floating-suggest value, so that e.g.

You watching: Convert double to int c++

See more: T A Psycho Killer'S Grim Design What Has An Angle, Psycho Killer

See more: wow feeling a bit morose

3.9 is converted to 4. This is typically what civilization want when they ask the question we are handling. There is no straight tool (like an operator or a library function) for rounding conversion, and strictly speaking a rounding convariation is not a convariation in the very same sense that those conversions which are defined in the C traditional. For positive floating-point worths, the simplest method to achieve a rounding convariation is to use an expression choose (long) (x+0.5) however it is much better to be prepared for negative worths, even if you perform not mean them to happen. This implies that one need to usage the conditional expressionx >= 0 ? (long)(x+0.5) : (long)(x-0.5)The value of this is expression is the integer which is nearemainder to the value of the floating-allude value of x. One can of course create a macro like#specify round(x) ((x)>=0?(long)((x)+0.5):(long)((x)-0.5)) if one demands rounding conversions a lot or wishes to make code rather even more readable. Notice that this means that the rounded worth of 1.5 is 2 and also the rounded value of -1.5 is -2. You might wish to have some various other therapy for a worth which is specifically in between two integers. The issue is, yet, not incredibly essential virtually. Beware that a convariation of a floating-allude value to an integer have the right to reason overcirculation and also that many implementations give no diagnostic in such situations. Using lengthy instead ofint might (or might not) provide you a broader selection of integers, but it is still smaller sized than the selection of floating-allude numbers. (Using lengthy is recommendable.) If performance is not crucial, it is a great concept to make your regime more durable by defining (rather of the straightforward #define above) the function lengthy round(double x) assert(x >= LONG_MIN-0.5); assert(x = 0) rerotate (long) (x+0.5); rerevolve (long) (x-0.5); or, if effectiveness is important, the macro#define round(x) ((x) LONG_MAX+0.5 ?error() : ((x)>=0?(long)((x)+0.5):(long)((x)-0.5)) This requires that you have#encompass and that you have actually an error handling routinecalled error which is a duty of type lengthy.Jukka KorpelaSeptember 1ninth, 1996

Categories: Q&A