Почему Ruby 14.5.round () работает лучше (дает 15), чем "% .0f"% 14.5 (дает 14) - PullRequest
1 голос
/ 20 ноября 2010

Почему round() выполняет работу лучше, чем printf форматирование строк?

ruby-1.9.2-p0 > "%.0f" % 14.5
 => "14" 

ruby-1.9.2-p0 > "%.0f" % 14.5000001
 => "15" 

ruby-1.9.2-p0 > 14.5.round
 => 15 

Ответы [ 2 ]

3 голосов
/ 21 ноября 2010

Только то, что вы узнали в школе, что .5 всегда округляется, не означает, что это единственный правильный способ сделать это. Существует целый ряд различных режимов округления ; то, на что вы смотрите, скорее всего "округлено до четного", которое округляет .5 до четного целого числа; это имеет преимущество в том, что не дает общего смещения вверх, как всегда при округлении вверх.

Высококачественные математические библиотеки, такие как Ruby Flt , обычно предоставляют способ явного выбора режима округления.

1 голос
/ 20 ноября 2010

«Лучшая работа»?Нет, нет, если вы заботитесь о том, чтобы усреднить все.Следовательно, вокруг к четному.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...