[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Где применяется преобразование float->int
inpost
$var = (0.1+0.7)*10;
echo (int)$var;

то есть выведется 7, а не 8. В каких целях используется такое преобразование типа?
Дело в том, что преобразовать из float в int можно через string:
$var = (string)$var;
echo (int)$var;

И получим число 8. То есть для чего применяется такой вид преобразования, который с виду кажется кривым?

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
kaww
такой вид преобразования вряд ли где-то применяется. Просто нужно понимать как работают float и помнить про его особенности
inpost
kaww
Это да, но могли бы сделать так, как я показал во втором примере, но они оставили именно первый вид, значит есть в этом смысл. Поэтому и создал тему в данном разделе, возможно кто-то видел реальное применение.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
OleKh
Цитата (inpost @ 12.04.2013 - 17:55)
В каких целях используется такое преобразование типа?

в целях завалить на экзамене )

http://www.php.net/manual/ru/language.type...float-precision
kaww
inpost,
это уже к вопросу приведения типов. (int) от флоат просто отбрасывает дробную часть а (string) - округляет до какого-то знака , т.е. (int)7,99999999999999999 = 7 - отброшена дробная часть, а (string)7,99999999999999999 - 7,99999999 + 0,00000001 = 8
inpost
Опять же, почему - я знаю. Как работает - я знаю. Вопрос в другом, где применяется, если мы говорим о том, что для приведения string используется округление, почему бы не использовать его в int.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
killer8080
Цитата (inpost @ 12.04.2013 - 18:08)
почему бы не использовать его в int

потому что преобразование типов работает с реальными данными, а не с их удобочитаемой формой отображения.
inpost
killer8080
Ты думаешь, что это проблемно было бы, если бы сделали преобразование типов и неожиданно выводилось после: (0.1+0.7)*10 = 8 ?
Мы же итак меняем реальные данные, так если их меняем, то можно сразу поменять на те, которые удобны будут каждому.
Что я вижу: "Мы сделали преобразование float в int, но им никогда не пользуйтесь!". Вот такое пока что я вижу, отсюда и спросил, какое есть реальное применение данного приобразования.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
Oyeme
Вообще смысла как такового нет.Так как php не требует жестково обьвявления типов переменных,он это делает во время компиляции.Определяя тип переменной,раскидывая по полочкам,что это может быть и куда.

При получение строки(Скажем хлама вместе с числаи),конвертация в другие типы возможна при отбрасывание определенных значений.Для integer все что что после запятой.Итд

Единственное что при конвертации со string to integer будет дольше,так как каждый char это чисовой код в ASCI(Зависит от кодировки).

С float будет же быстрее так,как нужно только отбросить часть с запятой.


А дальше уже описали как реагирует разные конвертации в разных ситуациях.

Если уже требуется более точно определять плавающею точку то использует математические библиотеки. wink.gif
inpost
killer8080
function int($var) {
if(is_float($var)) {
exit('Никогда не приводите неизвестную дробь к integer, так как это иногда может дать неожиданные результаты.');
}
}

П.С. Никогда не приводите неизвестную дробь к integer, так как это иногда может дать неожиданные результаты. - это из мануала.
Если так плохо, генерацию WARNING добавили бы.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
inpost
Oyeme
Вот единственное - скорость, но тут же, разве это не игра со спичками?
function int($var) {
return int($var + 0.001); (число погрешности);
}
Ну как бы 99% однотипных проблем ушло бы в небытие. Нормальный ответ программиста - не пользуйся им. Так зачем делали, чтобы потом говорить, что не надо пользоваться. Это всё очень странно, лично для меня.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.