cast variable to int vs round() function

后端 未结 2 1432
隐瞒了意图╮
隐瞒了意图╮ 2020-12-15 16:54

I have seen it in several places where (int)someValue has been inaccurate and instead the problem called for the round() function. What is the diff

2条回答
  •  予麋鹿
    予麋鹿 (楼主)
    2020-12-15 17:35

    1. Casting to int truncates a floating-point number, that is, it drops the fractional part.
    2. The round function returns the nearest integer. Halfway cases are rounded away from zero, for example, round(-1.5) is -2 and round(1.5) is 2.

    7.12.9.6 The round functions

    Synopsis

    #include 
    double round(double x);
    float roundf(float x);
    long double roundl(long double x);
    

    Description

    The round functions round their argument to the nearest integer value in floating-point format, rounding halfway cases away from zero, regardless of the current rounding direction.

    Returns

    The round functions return the rounded integer value.

    Source: the C99 standard (ISO/IEC 9899:1999). This section did not change in the C11 standard (ISO/IEC 9899:2011).

    (For those who are interested, here is a clear introduction to rounding algorithms.)

提交回复
热议问题