У меня следующий фрагмент кода:
<!DOCTYPE html>
<html>
<body>
<?php
$x = 10;
$y = 6;
echo $x / $y;
?>
</body>
</html>
Выход вышеуказанной программы 1.6666666666667
Я ожидал, что результат будет 1 (то есть целочисленное значение) как я делю два целочисленных значения. Но я удивился, увидев, что результат, который я получил, десятичная дробь.
Может кто-нибудь объяснить, пожалуйста, простым, понятным и простым для понимания языком, почему я получил значение десятичной дроби как вывод в вышеприведенной программе?
То есть, как работает приведение типов в вышеуказанной программе?
Также объясните механизм приведения типов, когда делится две дроби или одна дробь и одно целое число с примерами рабочего кода.
Кроме того, дайте мне знать, нужно ли приведение типов к значению дроби только в случае деления или в других арифметических операциях (например, сложение, вычитание и умножение). Если да, то как это работает? Если нет, какова действительная причина этого?
Благодарю вас.
К сожалению, это немного мутно в PHP — дело не только в операторе или операнде. Согласно инструкции:
Оператор деления («/») возвращает значение с плавающей запятой, если только два операнда не являются целыми числами (или строками, которые преобразуются в целые числа), а числа делятся равномерно, и в этом случае будет возвращено целочисленное значение. Для целочисленного деления смотрите intdiv ().
Таким образом, вы получите float
назад, если оба операнда не являются целыми числами а также они точно делятся.
<?php
var_dump(10 / 5);
var_dump(10.0 / 5.0);
var_dump(10 / 4);
int(2)
float(2)
float(2.5)
Других решений пока нет …