Float - две цифры после запятой - как? - PullRequest
0 голосов
/ 15 апреля 2019

Я пытался выполнить расчет в Ruby.Результат, который я получаю - 1589,5833333333333.Я хотел бы ограничить количество цифр после запятой.

Результат всегда должен быть ограничен двумя цифрами следующим образом:

1589.58

  • Вопрос № 1 = как я могу установить ограничение?
  • Вопрос № 2 = как мне округлить 1589,60 или 1589,55

Большое спасибо за помощь.Язык рубин

Ответы [ 2 ]

2 голосов
/ 15 апреля 2019

Другой вариант, но с сохранением объекта как Float :

n = 1589.5833333333333
m = n.truncate(2) #=> 1589.58
h = n.round(1) #=> 1589.6 # for the last zero you need to format the string

И хитрый:

k = (n*100).to_i.digits.tap{ |ary| ary.first > 5 ? ary[0] = 5 : ary[0] = 0 }.reverse.join('').to_i/100.0
    #=> 1589.55
0 голосов
/ 15 апреля 2019

На вопрос 1:

num = 1589.5833333333333
printf('%.2f', num)
=> 1589.58

Для вопроса 2 округлить до первой цифры:

num = 1589.5833333333333
printf('%.2f', num.round(1))
=> 1589.60

1589.55 - бит произвольного числа, округление в меньшую сторону обычно рассчитывается как 1589.58. Я не знаю ни одной функции Ruby, которая делает это из рук в руки.

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