Lua math ceil округляет число, если после десятичной точки нет цифр - PullRequest
0 голосов
/ 12 октября 2018

Я хотел бы округлить числа, используя math.ceil в Lua.

В некоторых случаях есть смысл, например:

  • ceil (260.5) -> 261

Но некоторые случаи странные, как:

  • ceil (2.2 * 100) -> 221 # Предположим, что нет округления вверх, и ответ - 220

Я понятия не имею, почему он действует так, что мне делать, если я хотел бы округлить число, если после десятичной точки есть цифры, и не округлять, если есть только целое число?

- Обновление: спасибо за ответ от @cyclaminist: 2.2 * 100 на самом деле немного больше, чем 220.0, потому что 2.2 нельзя представить точно как число с плавающей запятой.Try ('% .15f'): format (2.2 * 100): для меня это дает '220.000000000000028'

Ceil вернет целое число, которое является ближайшим и не меньше 220.000000000000028, так что возвращается 221.

Решение для получения 220: math.floor (2.2 * 100 + 0.5) -> return 220, так как math.floor возвращает ближайший, но не более 220.000000000000028

1 Ответ

0 голосов
/ 12 октября 2018

Попробуйте tonumber(string.format("%.0f",2.2*100)).

...