PHP int + float. Ошибка или поведение по умолчанию? - PullRequest
2 голосов
/ 29 марта 2012

Это функция для форматирования числа 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.

1 Ответ

1 голос
/ 29 марта 2012
<?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 (), если только это не был эксперимент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...