start2 > end1 || start2 > end1
~(start2 > end1 || start2 > end1) =
= ~(start2 > end1) && ~(start2 > end1) =
= start2 <= end1 && start2 <= end1
print PHP_INT_MAX;
9223372036854775807
То есть, все числа, большие этого значения, преобразуются в вещественные с потерей точности. Либо сразу используйте строку $a = '10044232471141200000';
, либо библиотеку высокой точности GMP.