Я хотел бы округлить числа, используя math.ceil в Lua.
В некоторых случаях есть смысл, например:
Но некоторые случаи странные, как:
- 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