Я хочу округлить число, и мне нужно правильное целое число, потому что я хочу использовать его в качестве ключа массива. Первое «решение», которое приходит на ум:
Однако я не уверен, что это всегда будет работать. Насколько я знаю (int) просто усекает любые десятичные дроби, и поскольку round($number) возвращает число с плавающей точкой с теоретически ограниченной точностью, возможно ли, что round($number) возвращает что-то например 7.999999... и тогда $key равен 7 вместо 8?
Если эта проблема действительно существует (я не знаю, как ее проверить ), как это решить? Возможно:
Код: Выделить всё
$key = (int)(round($number) + 0.0000000000000000001) // number of zeros chosen arbitrarily
Есть ли лучшее решение, чем это?
Подробнее здесь:
https://stackoverflow.com/questions/387 ... to-integer