PHP целое + число с плавающей запятой. Ошибка или поведение по умолчанию?

Это функция для форматирования числа FLOAT как INT, если десятичная часть равна 0.

$formatted = (int)$i + $i - (int)$i;

// $i = 15.12 , $formatted = 15.12
// $i = 15.00 , $formatted = 15

Но, похоже, это ошибка в PHP. Я не нашел приведения типов для операции INT+FLOAT в руководстве по PHP. На другом языке, например C++ INT+FLOAT = FLOAT.


person Serge    schedule 29.03.2012    source источник


Ответы (1)


<?php

$i = 15.00;

$formatted = (int)$i + $i - (int)$i;

var_dump($formatted);


float(15)

Это все-таки поплавок.

Причина, по которой 00 не отображается, заключается в том, что это ровно 15.

Если вы знаете, что число ровно 15, и не знаете контекста, откуда оно взялось, то вы не можете предположить никакой точности.

Например, вы ожидаете, что $f = (float) 15; показать 15.00? Нет, конечно нет. Применяется та же концепция, только в том контексте, что вы ожидаете 15.00.

Кроме того, вы можете найти полезными number_format() или round(), если только это не был просто эксперимент.

person Corbin    schedule 29.03.2012