Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Парадокс потери точности
 
 автор: mefestofel   (18.05.2007 в 05:34)   письмо автору
 
 


<?php
$param 
= (int) ( ((0.05 *4) + 1.4) * 10 );
print 
$param;
?>

   
 
 автор: himic   (18.05.2007 в 07:08)   письмо автору
 
   для: mefestofel   (18.05.2007 в 05:34)
 

Ымда, пипетс, вроеде получается круглое число 16, превращаем в инт 16, получается 15
ну я предпочитаю использовать round
кстате, если значение чуть больше 16-ти то превращение происходит нормально

   
 
 автор: Trianon   (18.05.2007 в 10:12)   письмо автору
 
   для: mefestofel   (18.05.2007 в 05:34)
 

Никакого парадокса нет, поскольку числа применяются приближенные (непредставимые точно), а округление - вниз, а не к ближайшему целому.

   
 
 автор: Drago   (18.05.2007 в 11:38)   письмо автору
 
   для: Trianon   (18.05.2007 в 10:12)
 

Но все равно, разве сначала не должно выполниться действие в скобках, а потом приводится к целому?
И получается, что (int) это аналог floor() ?

   
 
 автор: Trianon   (18.05.2007 в 13:27)   письмо автору
 
   для: Drago   (18.05.2007 в 11:38)
 

Конечно, сперва выполняется действие в скобках.

0.05*4 = 0.2
0.2+1.399999999999999 = 1.599999999999999
1.599999999999999*10 = 15.99999999999999
floor(15.99999999999999) = 15

floor отличается от int хотя бы тем, что может работать с числами за пределами +/- 2 миллиарда.

   
 
 автор: Drago   (18.05.2007 в 14:51)   письмо автору
 
   для: Trianon   (18.05.2007 в 13:27)
 

Ясно. :)

   
 
 автор: mefestofel   (18.05.2007 в 12:27)   письмо автору
 
   для: mefestofel   (18.05.2007 в 05:34)
 

Это связано с невозможностью точно выразить некоторые дроби в десятичной системе счисления конечным числом цифр.

   
 
 автор: Trianon   (18.05.2007 в 13:19)   письмо автору
 
   для: mefestofel   (18.05.2007 в 12:27)
 

Это связано с невозможностью точно выразить некоторые дроби в двоичной системе счисления конечным числом цифр.
Несущая система счисления у любого компьютера - двоичная.

   
 
 автор: mefestofel   (18.05.2007 в 14:09)   письмо автору
 
   для: Trianon   (18.05.2007 в 13:19)
 

В данном случае простые десятичные дроби не могут быть преобразованы в свои внутренние двоичные аналоги без небольшой потери точности, а это связано с невозможностью точно выразить некоторые дроби в десятичной системе счисления конечным числом цифр.
например 1/3
0.3333333333333333333...

   
 
 автор: Trianon   (18.05.2007 в 14:18)   письмо автору
 
   для: mefestofel   (18.05.2007 в 14:09)
 

В данном случае простые десятичные дроби совершенно не при чем.
Поскольку точные десятичные дроби ( а именно 1.4 ) не могут быть представлены в двоичной системе счисления конечным числом цифр.

1
.
0.4*2=
0.8*2=
1.6*2=
1.2*2=
0.4 (петля)

а именно - 1.001100110011.... = 1.(0011)

PS. mefestofel, Вы таки меня разозлили.

   
 
 автор: mefestofel   (18.05.2007 в 14:37)   письмо автору
 
   для: Trianon   (18.05.2007 в 14:18)
 

> PS. mefestofel, Вы таки меня разозлили.
Это чем же?
Тем что периодически передергиваю, специально?
Я задал этот вопрос не с проста, а адресован он был исключительно Вам и Вы клюнули, думаю Вы это поняли, мне интересно посмотреть глубину Ваших суждений. Посему возникает вопрос, сколько лет занимаетесь программированием и кто вообще скрывается за ником Trianon?
P.S. Слово 'Парадокс' в названии темы - прманка... ;-)

   
 
 автор: Trianon   (18.05.2007 в 15:08)   письмо автору
 
   для: mefestofel   (18.05.2007 в 14:37)
 

Тем, что спорите с очевидными (для программиста) вещами.
Полагаю, c Вашим упорством получить ответ на последний вопрос труда не составит.

   
 
 автор: mefestofel   (18.05.2007 в 15:23)   письмо автору
 
   для: Trianon   (18.05.2007 в 15:08)
 

> Полагаю, c Вашим упорством получить ответ на последний вопрос труда не составит.
У меня, честно говоря сформировалось о Вас интересное впечатление, и выводы я сделал соответствующие, хотелось бы услышать от Вас ответ на данный вопрос... Чтобы проверить 'правильность' моей гипотезы. По сему, воспользовавшись упорством, задам еще пару вопросов, сколько Вам лет? И кто Вы есть на самом деле? Занимаетесь ли Вы научной деятельностью? В какой области?

   
 
 автор: Trianon   (18.05.2007 в 15:55)   письмо автору
 
   для: mefestofel   (18.05.2007 в 15:23)
 

Ушло почтой.

   
 
 автор: dert   (18.05.2007 в 16:02)   письмо автору
 
   для: Trianon   (18.05.2007 в 15:55)
 

Я думаю это не только mefestofilu интересно, может быть Вы себя рассекретите ? :)))

   
 
 автор: mefestofel   (18.05.2007 в 16:33)   письмо автору
 
   для: Trianon   (18.05.2007 в 15:55)
 

Trianon - я отписал ответ. Я догадался насчет Вашей персоны. Попал в точку. Так я и думал.

   
 
 автор: Valick   (18.05.2007 в 16:01)   письмо автору
 
   для: mefestofel   (18.05.2007 в 15:23)
 

Trianon, mefestofel может хватит играть в царя горы? Два ваших полушария головного мозга (1-о от Trianon'а + 1-о от mefestofel'я *оба два думают только у девочек*) настоящая находка для данного форума. И не надо ничего никуда циклически сдвигать, а то у некоторых неподготовленных (например у меня) может случиться циклический сдвиг по фазе)))
Направте вашу неуёмную энергию на созидание (я не указываю, а обращаюсь с просьбой).

   
 
 автор: mefestofel   (18.05.2007 в 16:33)   письмо автору
 
   для: Valick   (18.05.2007 в 16:01)
 

Trianon - я отписал ответ. Я догадался насчет Вашей персоны. Попал в точку. Так я и думал.
Valick - мне с Trianon'ом не сравниться, до Trianon'а мне далеко и это не голословное заявление, а мысль сформированная, на основании данных совместной переписки...
Пожалуй я выберу себе место где-нибудь позади Trianon'a.
Нам всем есть чему поучиться у этого человека.

   
 
 автор: kasmanaft   (18.05.2007 в 18:06)   письмо автору
 
   для: Valick   (18.05.2007 в 16:01)
 

Поддержу Valick'a.. Моя фаза при чтении форума в последнее время тоже начинает сдвигаться... Я всё больше и больше понимаю СКОЛЬКО мне еще нужно учиться, чтобы не стыдно было называться "программистом".. чувствую себя убожеством :D

   
 
 автор: mefestofel   (18.05.2007 в 18:45)   письмо автору
 
   для: kasmanaft   (18.05.2007 в 18:06)
 

> чувствую себя убожеством :D
это слишком...
> СКОЛЬКО мне еще нужно учиться
для этого на форуме и разбираются интересные темы, ведутся дискуссии.

   
 
 автор: kasmanaft   (18.05.2007 в 19:23)   письмо автору
 
   для: mefestofel   (18.05.2007 в 18:45)
 

> это слишком...
Согласен. Конечно я в шутку сказал, на то и смайл на конце.. Но доля правды в этом есть :)
Со вторым тоже нельзя не согласиться.... Я просто удивляюсь, как человек может столько знать. *посмотрел по сторонам и произнес шепотом: я о Trianon говорю*. Я давно на этом форуме пропадаю, но в последнее время от дискуссий действительно крыша двигаеццо.. Я думал это только мне так кажется (у меня вообще последнее время настроение дурацкое) а тут еще Valick это же подметил.. Я не говорю, что это плохо.. нет. Просто как факт.

   
 
 автор: Trianon   (18.05.2007 в 20:24)   письмо автору
 
   для: kasmanaft   (18.05.2007 в 19:23)
 

Слушайте, коллеги...
ради бога, хватит тут из меня фетиш делать. Одного божества в форуме более чем достаточно.
У кого крыша едет - откройте мой профиль и успокойтесь. Вот то что там нарисовано - и есть я.

Dixi.

   
 
 автор: kasmanaft   (18.05.2007 в 20:31)   письмо автору
 
   для: kasmanaft   (18.05.2007 в 19:23)
 

Чиорт!!! Миня заметили.. надо было тише говорить %)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования