Я использую imagefilledrectangle()
в моем проекте. 2, 3, 4 и 5 параметры принимают координаты точки. Описание функции указывает, что тип должен быть integer
. Моя проблема заключается в том, что я вычисляю их во время выполнения и гарантируя, что они целые числа оказываются трудными.Использование чисел с плавающей запятой в imagefilledrectangle()
Мой вопрос:
Каковы последствия использования «действительных чисел» вместо целых чисел? Например:
imagefilledrectangle($img, 1.2, 3.4, 4.5, 7.8, $color)
Ref: http://php.net/manual/en/function.imagefilledrectangle.php
Вы имеете дело с пикселями. нет поплавков, поэтому вы могли бы случайным образом рисовать прямоугольники, сдвинутые на 1px вверх, в зависимости от того, как PHP решает округлить ваши значения float. Я предполагаю, что он просто усекает вниз, поэтому '(1.1, 2.9)' будет обрабатываться так же, как '(1, 2)', но в какой-то день он мог бы решить по-другому и стать '(1, 3)' , –
Спасибо за информацию @MarcB. Вы знаете, как я могу узнать, как PHP выполняет округление? Мне было бы интересно знать – henrywright
, функция [docs] функции (http://php.net/imagefilledrightangle) явно говорит, что args позиции - это ints. поэтому вы будете связаны с результатами преобразования php core float-> int. так что теперь ваши поплавки просто усекаются вниз: 'echo (int) 1.9' дает вам' 1'. возможно, в php 7.0 или что-то вместо этого он будет заменен на 'round (1.9)', давая вам '2'. –