Как отказаться от точности с плавающей точкой в ​​Ruby - PullRequest
3 голосов
/ 04 апреля 2011

Я хочу отказаться от точности с плавающей точкой.

(4.43597).discard(3)   =>   4.435 (not 4.436)

Я не хочу использовать раунд. Как я должен это делать ? Я не могу найти способ.

Ответы [ 4 ]

10 голосов
/ 04 апреля 2011
  1. умножить на 1000
  2. приведение к int
  3. разделить на 1000.0
3 голосов
/ 04 апреля 2011

Все еще используйте round, но эффект обрезки в нужной позиции.

(4.43597-0.0005).round(3)
0 голосов
/ 04 апреля 2011

Другой вариант:
1. умножить на 1000
2. использовать floor (), чтобы округлить
3. разделить на 1000.0

0 голосов
/ 04 апреля 2011

Немного излишне, но, тем не менее,

>> (4.43597).to_s.scan(/\d+\.\d{3}/)[0].to_f
=> 4.435
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...