Открытый христианский форум JesusChrist.ru

Библия | Книги | Словари | Софт | Аудио, BQT, Евангелизм, JCQ, Молитва

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

Общие разделы
   >> Технофорум
Просмотров: 8271 Просмотреть ВСЕ ветвиСледующая ветвь*

В теме участвуют: shourisha (12) chaotic (5) Шарфик (5) Ephes (2) Тимофей (2) F.D.V. (1) Странник (1)

shourisha
23/11/05 14:06
www.spreadbible.com

Re: Что за фигня с JesusChrist.ru происходит? [re: Шарфик]Help admins  

> Теперь вопрос на засыпку: почему, если я в PHP вычисляю 1.2 - 1.0 получаю 0.2?

А Вы уверены что получаете 0.2? :-) Вы от процессора на самом деле получаете в одном случае 0.19999999999999996, а в другом 0.20000000000000001 и об этом даже не подозреваете. :-) Просто PHP это для Вас округляет чтобы Вас это не пугало. Потому что PHP как и его праотец Perl -- нетипизированные язык. Там вместо типов -- скаляры. Если очень грубо говорить: "все на строках":

Но вот Python имеет типы и очень точен с плавающей точкой, и конфузов не будет, в то время Вы никак не можете понять почему в PHP 1.2 - 1.0 != 0.2 :-)

Вот смотрите:

>>> a = 0.2
>>> b = 1.2 - 1.0
>>> assert a == b
Traceback (most recent call last):
File "<stdin>", line 1, in ?
AssertionError
>>> a == b
False

А ведь все просто:
>>> a
0.20000000000000001
>>> b
0.19999999999999996

Но в Perl и PHP вы не поймете в чем проблема:
shourisha@gandalph:(~) cat test.pl
#!/usr/bin/perl

$a = 0.2;
$b = 1.2 - 1.0;

if ($a == $b) {
print "Equal\n";
} else {
print "Not equal\n";
}

shourisha@gandalph:(~) perl test.pl
Not equal

Или в Ruby:
irb(main):001:0> a = 0.2
=> 0.2
irb(main):002:0> b = 1.2 - 1.0
=> 0.2
irb(main):003:0> a == b
=> false

Или в Scheme/LISP:
1 ]=> (define a 0.2)
;Value: a
1 ]=> (define b (- 1.2 1.0))
;Value: b
1 ]=> a
;Value: .2
1 ]=> b
;Value: .19999999999999996

ГДЕ!!! ГДЕ БАГ!!! :)))))




Вся ветвь
ЗаголовокАвторОтослано
*Что за фигня с JesusChrist.ru происходит? chaotic   17/11/05 22:02
.*Re: Что за фигня с JesusChrist.ru происходит? Странник   24/11/05 15:42
.*Re: Что за фигня с JesusChrist.ru происходит? Chaotic   24/11/05 17:50
.*Re: Что за фигня с JesusChrist.ru происходит? Тимофей   18/11/05 13:43
.*Re: Что за фигня с JesusChrist.ru происходит? Chaotic   19/11/05 00:09
.*Re: Что за фигня с JesusChrist.ru происходит? shourisha   18/11/05 13:59
.*Re: Что за фигня с JesusChrist.ru происходит? Тимофей   18/11/05 14:13
.*Re: Что за фигня с JesusChrist.ru происходит? shourisha   18/11/05 14:24
.*Re: Что за фигня с JesusChrist.ru происходит? shourisha   18/11/05 11:26
.*Re: Что за фигня с JesusChrist.ru происходит? Chaotic   18/11/05 12:39
.*Re: Что за фигня с JesusChrist.ru происходит? shourisha   18/11/05 13:23
.*Re: Что за фигня с JesusChrist.ru происходит? Шарфик   21/11/05 19:01
.*Re: Что за фигня с JesusChrist.ru происходит? shourisha   21/11/05 19:06
.*Re: Что за фигня с JesusChrist.ru происходит? Шарфик   21/11/05 21:32
.*Re: Что за фигня с JesusChrist.ru происходит? shourisha   22/11/05 12:34
.*Re: Что за фигня с JesusChrist.ru происходит? Шарфик   22/11/05 23:53
.*Re: Что за фигня с JesusChrist.ru происходит? shourisha   23/11/05 14:06
.*Re: Что за фигня с JesusChrist.ru происходит? Шарфик   23/11/05 18:52
.*Re: Что за фигня с JesusChrist.ru происходит? shourisha   23/11/05 19:03
.*Re: Что за фигня с JesusChrist.ru происходит? Шарфик   23/11/05 19:21
.*Re: Что за фигня с JesusChrist.ru происходит? shourisha   23/11/05 19:56
.*Re: Что за фигня с JesusChrist.ru происходит? Ephes   21/11/05 18:19
.*Re: Что за фигня с JesusChrist.ru происходит? shourisha   21/11/05 18:23
.*Re: Что за фигня с JesusChrist.ru происходит? Ephes   22/11/05 14:03
.*Re: Что за фигня с JesusChrist.ru происходит? shourisha   22/11/05 16:43
.*Re: Что за фигня с JesusChrist.ru происходит? Chaotic   18/11/05 20:30
.*Re: Что за фигня с JesusChrist.ru происходит? shourisha   19/11/05 13:25
.*Re: Что за фигня с JesusChrist.ru происходит? F.D.V.   18/11/05 12:49
Перейти на