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

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

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

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

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

Страниц в этой нити: 1 | 2 | 3 | (показать все)
Шарфик
христианин
22/11/05 23:53

# 295689

Re: Что за фигня с JesusChrist.ru происходит? нов [re: shourisha, #295472] Help admins  

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

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

# 295850

Re: Что за фигня с JesusChrist.ru происходит? нов [re: Шарфик, #295689] 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

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

Шарфик
христианин
23/11/05 18:52

# 295923

Re: Что за фигня с JesusChrist.ru происходит? нов [re: shourisha, #295850] Help admins  

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

В том то и дело, что в PHP оно равно.. Округляет PHP результат - и слава
Богу - мне не надо гадать самому.

Ладно, давайте заканчивать этот наш технический оффтопик.

shourisha
23/11/05 19:03
www.spreadbible.com

# 295934

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

> В том то и дело, что в PHP оно равно..
????? ... !!!! 8-)))))

shourisha@gandalph $ php -v
PHP 5.0.3 (cli) (built: Apr 5 2005 09:52:02)
Copyright (c) 1997-2004 The PHP Group
Zend Engine v2.0.3, Copyright (c) 1998-2004 Zend Technologies

shourisha@gandalph $ cat test.php
<?php

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

if ($a == $b) {
print ("$a == $b\n");
} else {
print ("$a != $b\n");
}
?>

shourisha@gandalph $ php test.php
0.2 != 0.2

Это-ж как Вы умудрились тот-же код наоборот? :)))))

Шарфик
христианин
23/11/05 19:21

# 295949

Re: Что за фигня с JesusChrist.ru происходит? нов [re: shourisha, #295934] Help admins  

Я просто проверял по ламерски ))))

<? echo (1.2-1.0); ?>

shourisha
23/11/05 19:56
www.spreadbible.com

# 295961

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

> <? echo (1.2-1.0); ?>

Ну и что Вы получили на самом деле? 0.200000000001 или 0.199999999998?
И где Ваше сравнение с константой 0.2 чтобы убедиться в равности/неравности даных?

P.S. Вот так неточно мы и Писания разбираем... :)))))

Странник
Христианин
24/11/05 15:42

# 296199

Re: Что за фигня с JesusChrist.ru происходит? нов [re: chaotic, #293994] Help admins  

Есть такая штука, я ее вычислил. Дело в том, что важно, как вы регистрировались, а точнее под каким именем. Chaotic или CHAOTIC или CHaotiC и т.д. Здесь очень важно заглавные вы буквы использовали или нет. Попробуйте. все должно получиться!!! Проверено мной

Chaotic
Heretic
24/11/05 17:50

# 296217

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

Чуть кандрашка не хватила. Пытался "выйти" из форума, и вспомнив, что забыл пароль нажимаю одноимённую кнопочку. И тут появляется сообщение, что невозможно найти ваш e-mail. Печеньки спасли. :-))

Хм, похоже ты был прав, странник. Я имею ввиду насчёт верхнего и нижнего регистра букв.

Исправлено пользователем Chaotic 24/11/05 05:53 PM.



Страниц в этой нити: 1 | 2 | 3 | (показать все)

ОТВЕТИТЬ ВСЕМ   Просмотреть ВСЕ ветвиСледующая ветвь*Отображение Ветвями
Перейти на