none
Математика C# Math Round RRS feed

Ответы

  • Выбранный вами метод округлят значения вида n + .5 (где n - целое число) в сторону целых числел которые находятся дальше от нуля (Away From Zero).

    Очевидно что 12 находится дальше от нуля чем 11. Таким образом 12 получается потому что это правильный результат. 


    This posting is provided "AS IS" with no warranties, and confers no rights.

    • Помечено в качестве ответа DevingAs 3 сентября 2015 г. 17:43
    3 сентября 2015 г. 17:33
    Модератор
  • Надо использовать Math.Floor() или Math.Truncate() в зависимости от того что вам требуется.

    Первый вариант округляет в сторону меньшего значения (11.9 => 11, -11.9 => -12), второй в сторону нуля (11.9 => 11, -11.9 => -11)


    This posting is provided "AS IS" with no warranties, and confers no rights.

    • Помечено в качестве ответа DevingAs 4 сентября 2015 г. 5:16
    3 сентября 2015 г. 18:17
    Модератор
  • Там же написано всё. "В этом случае перечисление MidpointRounding позволяет указать, какое число должна возвращать операция округления — ближайшее в направлении нуля или ближайшее четное число."

    P.S. понял вопрос. Там это объяснено: 

    Notes to Callers
    Because of the loss of precision that can result from representing decimal values as floating-point numbers or performing arithmetic operations on floating-point values, in some cases the Round(Double, MidpointRounding) method may not appear to round midpoint values to the nearest even integer.

    т.е. дело в том, что 11.5 это не ровно 11.5

    • Изменено Andry_S 3 сентября 2015 г. 17:34
    • Помечено в качестве ответа DevingAs 3 сентября 2015 г. 17:43
    3 сентября 2015 г. 17:23

Все ответы

  • Там же написано всё. "В этом случае перечисление MidpointRounding позволяет указать, какое число должна возвращать операция округления — ближайшее в направлении нуля или ближайшее четное число."

    P.S. понял вопрос. Там это объяснено: 

    Notes to Callers
    Because of the loss of precision that can result from representing decimal values as floating-point numbers or performing arithmetic operations on floating-point values, in some cases the Round(Double, MidpointRounding) method may not appear to round midpoint values to the nearest even integer.

    т.е. дело в том, что 11.5 это не ровно 11.5

    • Изменено Andry_S 3 сентября 2015 г. 17:34
    • Помечено в качестве ответа DevingAs 3 сентября 2015 г. 17:43
    3 сентября 2015 г. 17:23
  • Выбранный вами метод округлят значения вида n + .5 (где n - целое число) в сторону целых числел которые находятся дальше от нуля (Away From Zero).

    Очевидно что 12 находится дальше от нуля чем 11. Таким образом 12 получается потому что это правильный результат. 


    This posting is provided "AS IS" with no warranties, and confers no rights.

    • Помечено в качестве ответа DevingAs 3 сентября 2015 г. 17:43
    3 сентября 2015 г. 17:33
    Модератор
  • Как тогда округлить 11.5 или 11.7  или 11.8 до 11 силами C#?


    Вроде нашёл Floor
    • Изменено DevingAs 3 сентября 2015 г. 17:54
    3 сентября 2015 г. 17:43
  • Надо использовать Math.Floor() или Math.Truncate() в зависимости от того что вам требуется.

    Первый вариант округляет в сторону меньшего значения (11.9 => 11, -11.9 => -12), второй в сторону нуля (11.9 => 11, -11.9 => -11)


    This posting is provided "AS IS" with no warranties, and confers no rights.

    • Помечено в качестве ответа DevingAs 4 сентября 2015 г. 5:16
    3 сентября 2015 г. 18:17
    Модератор