Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Integer не работает с вычитанием, умножением и делением.
Форумы портала PHP.SU » » Хранение данных, их вывод и обработка » Integer не работает с вычитанием, умножением и делением.

Страниц (1): [1]
 

1. Oleh - 09 Августа, 2011 - 01:54:52 - перейти к сообщению
Прохожу в книге тему "математические операторы". Делаю всё подряд, что написано.
Наткнулся на ситуацию, когда преобразование в целое число не сработало, если оператор преобразования (int) поставить перед операцией вычитания, умножения и деления, а если поставить перед операцией сложения, то работает.
В книге эта ситуация не описана. Вот я и думаю, может это я что-то не так пишу ?

Сложение. Всё работает как я и хотел.

<?
$s1=5.3;
$s2=3;
$s3=(int)$s1+$s2;
print $s3."<p>";
?>

Вычитание, умножение и деление. Приходится сначала присваивать переменным №3 результат соответствующей операции ($j3=$j1-$j2;), а уже потом значения этих переменных №3 преобразовывать (int) и присваивать переменным №4, чтобы выводимый результат округлялся.

<?
$j1=5;
$j2=2.7;
$j3=(int)$j1-$j2;
$j4=(int)$j3;
print $j3."<br>";
print $j4."<p>";

$k1=2;
$k2=2.7;
$k3=(int)$k1*$k2;
$k4=(int)$k3;
print $k3."<br>";
print $k4."<p>";

$d1=5;
$d2=2;
$d3=(int)$d1/$d2;
$d4=(int)$d3;
print $d3."<br>";
print $d4."<br>";
$f=$d1%$d2;
print $f."<p>";
?>

Вообще всё началось с того, что я вывел результат деления (5:2=2.5) и остаток (1).
Я так понял, что остаток выводят в случае необходимости получения в результате деления целого числа, а не вещественного.
2. Ezi - 09 Августа, 2011 - 02:28:46 - перейти к сообщению
эм... Остаток это, как бы верно выразиться, число оставшееся при делении, покажу на примере, 10/2=5 10%2=0 10/3=3.33... 10%3=1 не обязательно чтобы получить остаток должно второе число быть в периоде, вообщем если не поняли вспомните 3й класс когда делили столбикомУлыбка
3. iflight - 09 Августа, 2011 - 16:02:29 - перейти к сообщению
Oleh А вы скобки не пробовали юзать? Улыбка Приоритет операций то учитывайте
Смотрите:
сначала приводите к целому, потом складываете 5+3, создается впечатление что сначала складывается 5.3+3, затем приводится к целому.
PHP:
скопировать код в буфер обмена
  1. <?
  2. $s1=5.3;
  3. $s2=3;
  4. $s3=(int)$s1+$s2;
  5. print $s3."<p>";
  6. ?>

PHP:
скопировать код в буфер обмена
  1. $j1=5;
  2. $j2=2.7;
  3. $j3=(int)$j1-$j2;
  4. $j4=(int)$j3;
  5. print $j3."<br>";
  6. print $j4."<p>";

Вы приводите к целому $j1, а затем вычитаете из него дробное число...
4. gogita - 05 Сентября, 2011 - 09:28:33 - перейти к сообщению
При умножении получаем 1000000 * 1000000 = 1.0E+12, т.е. научное выражение.
Как увеличить диапазон научной выражений т.е. при умножении 1000000 * 1000000 получить 1000000000000, он не то ерунду?
(Добавление)
В javascript это диапазон гораздо больше.

 

Powered by ExBB FM 1.0 RC1