Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> Проблема с переводом из double в integer 
V
    Опции темы
Mal Hack
Дата 8.1.2007, 02:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



skyboy, я изначально смотрю на задачу, и вижу, что работа с массивом ведется через одно место. Соответственно и реакция такая, на код, который реально на практике не применяется, т.к. бредовый. 
Значит автор так хорошо делает акцент при составлении поста...

Цитата(skyboy @  8.1.2007,  02:37 Найти цитируемый пост)
Кстати, Mal Hack, всё же не только в кривости кода дело, верно?  smile  

Да, конечно. Только не в "кривости" кода, а в "глупости" кода...
Это все равно что 
Код
$b = 5;
$a = (int)(double)(float)$b;
.

Цитата(skyboy @  8.1.2007,  02:37 Найти цитируемый пост)
спасибо за приведенные тесты, Mal Hack, ewolf.

Всегда пожалуйста.
PM ICQ   Вверх
murod
Дата 8.1.2007, 09:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 113
Регистрация: 17.9.2005
Где: Uzbekistan/Tashke nt

Репутация: 2
Всего: 4



я провел вот такой эксперимент,
Код

<?php
$i = 0;
$dx = 0.01;
$L = 0.16;
for ($i=0; $i<$L; $i+=$dx)
{
 $float_number=(100*$i);
 $int_number=(int)$float_number;
 $string_number=(string)$float_number;
 printf("%01.19f -> %01.1f -> %s <br>", $float_number,$int_number,$string_number);
}
?>

этот код выводит:
0.0000000000000000000 -> 0.0 -> 0
1.0000000000000000000 -> 1.0 -> 1
2.0000000000000000000 -> 2.0 -> 2
3.0000000000000000000 -> 3.0 -> 3
4.0000000000000000000 -> 4.0 -> 4
5.0000000000000000000 -> 5.0 -> 5
6.0000000000000008882 -> 6.0 -> 6
7.0000000000000008882 -> 7.0 -> 7
8.0000000000000000000 -> 8.0 -> 8
9.0000000000000000000 -> 9.0 -> 9
10.0000000000000000000 -> 10.0 -> 10
10.9999999999999982236 -> 10.0 -> 11
11.9999999999999982236 -> 11.0 -> 12
12.9999999999999982236 -> 12.0 -> 13
13.9999999999999982236 -> 13.0 -> 14
15.0000000000000000000 -> 15.0 -> 15 
отсюда несложно уловить, при преобразовании типoв с плаваюшей запятой на целые числа
просто отбрасывается дробняя часть(числа после запятой).
вот в этом было и фокус!

Это сообщение отредактировал(а) murod - 8.1.2007, 10:16
--------------------
Люди всего мира берегите природу!  
PM MAIL ICQ   Вверх
Icaros
Дата 8.1.2007, 20:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 26.5.2006

Репутация: нет
Всего: нет



Добрый день, уважаемые пользователи. И отдельное приветствие уважаемому  Mal Hack`у.
Спасибо вам всем за помощь.
 
И отдельно г-ну Mal Hack`у.
Трудно поспорить с Вашим мастерством программирования, ровно как и с тем, что я не профи. По поводу первого поста - Вы скорее всего правы, уважаемый Mal Hack. С сочинительством у меня беда, да и не программист по образованию... НО, насколько бы "бредовым" не была приведенная программа (кстати, более корректна вторая, приведенная мной), проблема морочила мне голову очень долгое время. На момент создания программы для меня была удобна именно такая форма обращения к массиву. Да и спрашивал я не про уровень убогости, а про странный эффект. Мне и в голову не приходило, что такое может быть. 
Делаю программу в учебных (просьба не ржать) целях. К сожалению, кроме вашего форума спросить не у кого. Да к тому же я не показывал вам всей программы, и приведенный мною код является упрощенной версией, предназначенной только для демонстрации эффекта. 

P.S. Еще раз спасибо за помощь.
PM MAIL   Вверх
Mal Hack
Дата 8.1.2007, 21:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Цитата(Icaros @  8.1.2007,  20:47 Найти цитируемый пост)
На момент создания программы для меня была удобна именно такая форма обращения к массиву.

А чем не удобная форма, когда итерационный цикл идет по целым значениям? Я вот этого понять не могу?
Я могу понять, когда такое надо применить, к примеру, для мат расчетов (интеграл посчитать), но тут - извольте...
PM ICQ   Вверх
smartov
Дата 16.1.2007, 00:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 7
Всего: 259



Тема жжот. Не знал что такая уловка есть  smile  Ужас.
PM MAIL   Вверх
DENNN
Дата 16.1.2007, 00:52 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

Репутация: 1
Всего: 43



ИМХО, конечно и сейчас меня закидают помидорами, но тема наглядно показывает одну очень интересную истину: "чистые" PHP-программисты зачастую совершенно не понимают ни как работает компьютер, ни что же реально происходит с их данными. По чистыми  я понимаю людей, кто сразу начал с PHP, не занимаясь более "тяжелыми" языками. Фактически ответ был указан в одном из первых ответов. Но большая часть спорящих совершенно не обратила на него внимания. Любой же сишник, дельфист, ассемблерщик (и прочие языки, где необходимо заглядывать в способы хоранения данных, утсройство процуедур и т.д. и т.п.)  догался бы сразу без подсказок. Я уж не говорю о таких граблях как прописная истина "вещественные числа нельзя сравнивать операциями точного равенства, только после округления с заданной потерей точности".

Обратите внимание при случае, как неимоверно тяжело дается "читстому PHP-исту" осваивание азов C++ и насколько легко и даже с некоторым недоумением к простоте, граничащей с небрежностью, получается у професионального C++ика начинать работать с PHP. Самое примечательное, что синтаксис PHP чуть ли не скопирован с C.

Кидайте помидоры, я готов smile

Добавлено @ 00:54 
P.S. для интертесующихся - причину неверной работы кода понял практически недочитав до конца первый абзац, но так интересно было следить за дискуссией! 
PM ICQ   Вверх
Mal Hack
Дата 16.1.2007, 01:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



DENNN, согласен с тобой во всем, кроме:

Цитата(DENNN @  16.1.2007,  00:52 Найти цитируемый пост)
как неимоверно тяжело дается "читстому PHP-исту" осваивание азов C++

Я начал PHP и паскаль практически одновременно, Си потом освоил (азы, конечно), довольно-таки легко, столкнувшись с этими проблемами на Delphi...

Еще играет роль опыт... Если все время "клепать" приложения на vcl, на Delphi, к примеру, то таких вещей ты как не знаешь так знать и не будешь.
PM ICQ   Вверх
smartov
Дата 16.1.2007, 10:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 7
Всего: 259



DENNN
Цитата(DENNN @  15.1.2007,  23:52 Найти цитируемый пост)
Кидайте помидоры

Чмяк-чмяк... чмяк.... smile

Как говорил Горбачёв "Боря, ты не прав".
Видел я PHP код, который пишут наСильники, никогда на php не писавшие smile То еще зрелище. Все пытаются сделать руками и через ж (как в С привыкли). Все пытаются память освобождать итд итп. 
Так что у каждого языка своё. У PHP своя задача и с задачей C она не пересекается, и устраивать холивар по этому поводу смысла не вижу. 

Так что ящик помидорав тебе в подарок smile
PM MAIL   Вверх
DENNN
Дата 16.1.2007, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

Репутация: 1
Всего: 43



Цитата(Mal Hack @  16.1.2007,  01:13 Найти цитируемый пост)
начал PHP и паскаль практически одновременно

ЧТо уже выбивает из общей тенденции. smile

smartov, спасибо за помидоры. 
PM ICQ   Вверх
Mal Hack
Дата 16.1.2007, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Цитата(DENNN @  16.1.2007,  12:21 Найти цитируемый пост)
ЧТо уже выбивает из общей тенденции. smile

Знания PHP помогали осваивать Pascal... Я сначала на PHP многое делал, уже потом на Pascal'e.
PM ICQ   Вверх
szz
Дата 19.1.2007, 20:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

Репутация: 8
Всего: 33



Позвольте немного приложиться.
  Я как раз из тех, кто на PHP и на Perle писал все ручками, переходя с Си smile например так:
Код

// надо скопировать строку а в b
$a = "the string content";
$b = "";
for($i=0;$i<strlen($a);++$i)
   $b[$i] = $a[$i];

 smile Утрирую конечно, но все же smile

но все же можно вполне писать на Си, понятия не имея о внутреннем устройстве doudle и float.
Чего не скажешь, например, о бестиповых языках типа Би (непосредственного предшественника Си). Там есть только один тип - слово - то есть два байта. 
И если вам нужно дробное, то самому приходилось реализовывать, хочешь - плавающей, хочешь - фиксированной точкой. Нужны символы, сроки, указатели - сам думац как реализовать. Как сам с собой договоришься.  smile 
 И Бишники (если такие ее существуют) над от души бы над этой темой посмеялись smile


--------------------
PM   Вверх
Закрытая темаСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0899 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.