last day (15 days later) » 

11:56 AM
0
Q: Проверка на наличие дробной части

dmitryshishkinЯ получаю число типа float. Несмотря на тип, дробная часть есть не всегда. Как проверить есть ли она?

 
Все ответы выдают ерунду :) sandbox.onlinephpfunctions.com/code/…
 
@Visman В моем случае не страшно, что нет такой точности.
 
Да там действительно точности не хватает, во float(4) переходит число.
 
@Visman забавно, что даже при приведении к string такой косяк)
 
@AlexanderGrushko такая проблема не только в PHP. Когда заканчиваются биты — теряется точность.
 
11:56 AM
@dmitryshishkin а другие языки, разве, не ругаются на переполнение типа?
 
@AlexanderGrushko зависит от особенностей языка.
 
@Visman, твой пример нереален. php не поддерживает такую точность sandbox.onlinephpfunctions.com/code/…
 
@dmitryshishkin $bool = (bool) preg_match('~\.\d+~', $str);
 
@ЕвгенийБорисов, второй мой комментарий к этому вопросу прочитать не судьба?
 
Кому is_float не понравился? sandbox.onlinephpfunctions.com/code/…
 
11:56 AM
@АндрейProjectSoft is_float не нравится, потому что в моем случае я всегда получаю на входе переменную типа float и всегда возвращается true.
 
@dmitryshishkin покажите пример, который отдаёт такой float. Прям чтоб отдавал типа 2.00000000000000. Это чтобы понять суть вашей задачи.
 
@АндрейProjectSoft да божечки-кошечки, я же выше написал, что у меня нет таких диких чисел, поэтому мне не нужна такая точность.
 
@dmitryshishkin есть или нет - это уже второй вопрос. Пример кода прошу. Может у вас там типа $b = (float)2; тогда да, var_dump($b > floor($b));
 
@АндрейProjectSoft я не понимаю пример какого кода вы от меня хотите)
 
Я вам показал, как из числа типа int получить float. Хотелось посмотреть, как у вас такое получается. Если не нужна такая точность, но вы ищите дробную часть, то точность зачем-то нужна оказывается точность. И решение может находиться на много выше, чем место, где вы хотите найти дробную часть.
 
11:56 AM
@АндрейProjectSoft так мне не надо из int делать float. Мне просто из некого метода приходит float и в зависимости от того есть или нет десятичная часть я совершаю разные действия. Там в числе могут быть максимум десятичные, но не дальше.
 

last day (15 days later) »