За последние 24 часа нас посетили 204673 программиста и 2232 робота. Сейчас ищут 1685 программистов ...

Превозмогания тред

Тема в разделе "PHP для новичков", создана пользователем ubunta2, 27 июн 2017.

  1. Amperandus

    Amperandus Активный пользователь

    С нами с:
    13 мар 2009
    Сообщения:
    226
    Симпатии:
    11
    не пойму что не так то? float это int со знаками после запятой. точнее int частный случай float и если в функции жестко указаны типы то все правильно.
     
  2. t1grok

    t1grok Новичок

    С нами с:
    29 янв 2017
    Сообщения:
    119
    Симпатии:
    32
    Strict mode включите
     
  3. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Есть варианты лучше? Понятно что в книге не всё хорошо разжёвано, так что приходиться искать дополнительно информацию
     
  4. ubunta2

    ubunta2 Зэк
    [ БАН ]

    С нами с:
    27 июн 2017
    Сообщения:
    947
    Симпатии:
    28
    echo sum(2.5, 2.5);
    5, а почему 4
     
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    на колу мочало
     
  6. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Рассуждения человека, который не знает, как работает машина на низком уровне. То, почему я советую хотя бы чуток всем новичка потрогать Си..
    Соль в том, что float и int это совершенно разные типы данных, с разной емкостью, с разной моделью хранения, с разным принципом обработки и чтения из памяти, с разной механикой арифметических операций, занимающие разное количество байт в памяти (по дефолту). То, что для тебя они выглядят как циферки с запятой или циферки без запятой не делает их похожими.
     
  7. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Тем не менее C++ поступает в этой ситуации аналогично - обрезает дробную часть
    --- Добавлено ---
    Это я про
     
  8. Amperandus

    Amperandus Активный пользователь

    С нами с:
    13 мар 2009
    Сообщения:
    226
    Симпатии:
    11
    фелл как всегда в своем репертуаре. речь идет про приведение типов, а не про аспекты хранения разных типов.

    если что я еще перфокарты видел в живую
     
  9. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Ок, просто я порой дотошный к деталям.
     
  10. ubunta2

    ubunta2 Зэк
    [ БАН ]

    С нами с:
    27 июн 2017
    Сообщения:
    947
    Симпатии:
    28
    все равно не понял
     
  11. ubunta2

    ubunta2 Зэк
    [ БАН ]

    С нами с:
    27 июн 2017
    Сообщения:
    947
    Симпатии:
    28
    PHP:
    1. <?php
    2. echo (int) ( (0.1+0.7) * 10 ); // выводит 7!
    3. ?>
     
  12. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Что ж ты такой непонятливый... В объявлении функции все параметры указаны как целые числа, поэтому при вызове вещественные преобразуются в целые путём отсекания дробной части. Т.е. из 2.5 становится 2.
     
  13. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    А это особенности хранения вещественных чисел в памяти. Надо просто знать, что может так получиться. Связано с тем, что компьютер хранит их в двоичной, а не десятичной системе, и те дроби, которые конечны в десятичной системе, могут быть бесконечными в двоичной. Поэтому там, где это особо важно (например, при расчётах банковских операций), тип float не используются, используются другие методы.
     
  14. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    @ubunta2 а там откуда ты взял пример, как объясняется?
     
  15. alexblack

    alexblack Старожил

    С нами с:
    20 янв 2016
    Сообщения:
    640
    Симпатии:
    381
  16. Познающий php

    Познающий php Новичок

    С нами с:
    23 мар 2017
    Сообщения:
    381
    Симпатии:
    74
    Я тебе в той теме про числа давал тебе ссылку на доку про типы. Если бы ты ее прочел, то ты бы знал все. Но нахер тебе читать, ведь лучше каждый раз создавать тему на форуме....
     
    #341 Познающий php, 14 июл 2017
    Последнее редактирование: 14 июл 2017
  17. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Это называется "неявное преобразование".

    Ты обрати внимание на буковки "int".Это от английского Integer - целое число.
     
  18. Amperandus

    Amperandus Активный пользователь

    С нами с:
    13 мар 2009
    Сообщения:
    226
    Симпатии:
    11
  19. ubunta2

    ubunta2 Зэк
    [ БАН ]

    С нами с:
    27 июн 2017
    Сообщения:
    947
    Симпатии:
    28
    я тогда не понял
     
  20. ubunta2

    ubunta2 Зэк
    [ БАН ]

    С нами с:
    27 июн 2017
    Сообщения:
    947
    Симпатии:
    28
    PHP:
    1. <?php ## Локальные переменные.
    2.  function silly()
    3.   {
    4.     $i = mt_rand();    // записывает в $i случайное число
    5.     echo "$i<br />";  // выводит его на экран
    6.     // Эта $i не имеет к глобальной $i никакого отношения!
    7.   }
    8.   // Выводит в цикле 10 случайных чисел.
    9.   for ($i = 0; $i != 10; $i++) silly();
    10.   echo PHP_OS;
    11. ?>
    вывелось
    Код (Text):
    1. 1242196326
    2. 1935339356
    3. 1375599740
    4. 1973729764
    5. 1081237598
    6. 1666730013
    7. 695980527
    8. 1311631384
    9. 572672605
    10. 1299279437
    11. WINNT
     
  21. alexblack

    alexblack Старожил

    С нами с:
    20 янв 2016
    Сообщения:
    640
    Симпатии:
    381
    Давай методом исключения,как ты думаешь что у тебя в коде может выводить информация об ОС,что тут впринципе может быть лишним,как думаешь?
     
  22. ubunta2

    ubunta2 Зэк
    [ БАН ]

    С нами с:
    27 июн 2017
    Сообщения:
    947
    Симпатии:
    28
    echo PHP_OS;
    выводит мою систему - операционку?
     
  23. alexblack

    alexblack Старожил

    С нами с:
    20 янв 2016
    Сообщения:
    640
    Симпатии:
    381
  24. ubunta2

    ubunta2 Зэк
    [ БАН ]

    С нами с:
    27 июн 2017
    Сообщения:
    947
    Симпатии:
    28
    в учебнике не было код кто-то дописал
    --- Добавлено ---
    понял
     
  25. ubunta2

    ubunta2 Зэк
    [ БАН ]

    С нами с:
    27 июн 2017
    Сообщения:
    947
    Симпатии:
    28
    PHP:
    1. <?php ## Функция для вывода содержимого переменной.
    2.  // Распечатывает дамп переменной на экран.
    3.   function dumper($obj)
    4.   {
    5.     echo
    6.       "<pre>",
    7.         htmlspecialchars(dumperGet($obj)),
    8.       "</pre>";
    9.   }
    10.  
    11.   // Возвращает строку - дамп значения переменной в древовидной форме
    12.   // (если это массив или объект). В переменной $leftSp хранится
    13.   // строка с пробелами, которая будет выводиться слева от текста.
    14.   function dumperGet(&$obj, $leftSp = "")
    15.   {
    16.     if (is_array($obj)) {
    17.       $type = "Array[".count($obj)."]";
    18.     } elseif (is_object($obj)) {
    19.       $type = "Object";
    20.     } elseif (gettype($obj) == "boolean") {
    21.       return $obj? "true" : "false";
    22.     } else {
    23.       return "\"$obj\"";
    24.     }
    25.     $buf = $type;
    26.     $leftSp .= "    ";
    27.     for (Reset($obj); list($k, $v) = each($obj); ) {
    28.       if ($k === "GLOBALS") continue;
    29.       $buf .= "\n$leftSp$k => ".dumperGet($v, $leftSp);
    30.     }
    31.     return $buf;
    32.   }
    33. ?>
    --- Добавлено ---
    все нашел вывелось