April 1st, 2005

dance

А вот вам загадка

Даже две:
1. Угадайте, как Visual Basic округляет эти два числа?
a. 12.5
b. 13.5
2. эта попроще :) сколько будет 1200,6-1200,2 ? (тут, в общем, VB ни при чем)
  • Current Mood
    это не первое апреля, честно :)
dance

отвечаю

ответы на предыдущие загадки:
1. Правило Гаусса (его еще называют «бухгалтерским округлением») предписывает: если последний разряд 5, округлять в сторону ближайшего чётного целого. В этом случае 12,5 после округления превращается в 12, а 13,5 — в 14
Принцип подобного округления, как я понимаю, нацелен на уменьшение (не накопление) погрешности округления при суммировании.

Бейсик так и поступает.
очень я вчера была удивлена, когда поняла, что 12.5 округляется до 12.
но еще больше я офигела, поняв, что 13.5 округляется-таки до 14! :)

поискав в интернете причины такого странного поведения, нашла много чего интересного.
например, что в КВНе из-за этого как-то был скандал - посчитали по этому правилу баллы :))

Более того, в одном суде ответчики пытались выиграть дело, применив это правило при вычислении кворума. Ответчики и в кассационной жалобе указали, "суд неправильно, без учета правил математики, произвел округление числа 10,5 до 11, а следовало округлить его до 10". При этом ссылался на правило Гаусса

2. 0,39999999999986400000

ну, это просто ошибки округления
dance

моя белая спина

Да знаю я, знаю, что у меня спина белая! Она у меня вообще с рождения такая. И что?
  • Current Mood
    я же европеоид, все-таки