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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Неверно считает разность чисел 
V
    Опции темы
xarakiry
Дата 21.2.2012, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Всем привет. Столкнулся с одной проблемкой при вычитании 2-х чисел.
пишу 0.7862-0.7863 = -9.9999999999989E-5    
Что то я не пойму. Подскажите в чём проблема ?
--------------------
Все университеты Азербайджана на students.az
PM MAIL WWW   Вверх
$дмитрий
Дата 21.2.2012, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 19.6.2004

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



Какая версия php? В 5.2.17 выдает -0.0001
PM MAIL   Вверх
xarakiry
Дата 21.2.2012, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



PHP Version 5.2.11
До этого сайт сидел на агаве и там тоже самое было..

Добавлено через 1 минуту и 33 секунды
можно список установленных у вас библиотек ?
--------------------
Все университеты Азербайджана на students.az
PM MAIL WWW   Вверх
krundetz
Дата 21.2.2012, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

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



xarakiry, а как задаются аргументы выражения как числа или как строки?


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
xarakiry
Дата 21.2.2012, 22:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



как показал выше. просто создаю пустой файл и выполняю это выражение и получаю ерунду...
--------------------
Все университеты Азербайджана на students.az
PM MAIL WWW   Вверх
$дмитрий
Дата 22.2.2012, 01:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 19.6.2004

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



Цитата

можно список установленных у вас библиотек ? 

Вот, только причем здесь они? Если все отрубить "по другому" считать не будет. Думаю ошибка в конкретной сборке
Код

extension=php_bz2.dll
extension=php_curl.dll
extension=php_gd2.dll
extension=php_imagick.dll
extension=php_mbstring.dll
extension=php_mcrypt.dll
extension=php_memcache.dll
extension=php_mhash.dll
extension=php_mime_magic.dll
extension=php_mssql.dll
extension=php_mysql.dll
extension=php_mysqli.dll
extension=php_openssl.dll
extension=php_pdo.dll
extension=php_pdo_mssql.dll
extension=php_pdo_mysql.dll
extension=php_pdo_sqlite.dll
extension=php_sockets.dll
extension=php_sqlite.dll
extension=php_zip.dll

PM MAIL   Вверх
Pfailed
Дата 22.2.2012, 08:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



xarakiry, ошибки здесь нет, это особенность представления вещественных чисел в двоичной системе счисления, которое в итоге даёт погрешность.
Результат кода ниже вас наверное тоже удивит
Код

$r = 0;
for ($i=0; $i<10; $i++) {
        $r += 0.1;
}

echo $r == 1 ? "1 == 1" : "1 != 1", "\n";


Возможно round() вам поможет.


--------------------
PM MAIL   Вверх
skyboy
Дата 22.2.2012, 10:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

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



Цитата(Pfailed @  22.2.2012,  07:16 Найти цитируемый пост)
xarakiry, ошибки здесь нет, это особенность представления вещественных чисел в двоичной системе счисления, которое в итоге даёт погрешность.

это-то понятно. но "идя навстречу пользователям", результат округляется, как я понимаю, до наиболее "короткого" в десятичном представлении числа.
у меня PHP 5.2.10-2ubuntu6.10 выдает "0.0001" и "-0.0001"

Добавлено через 57 секунд
при том, что
Код

(-0.7862 + 0.7863)==0.0001?1:0;

выводит 0, конечно.
PM MAIL   Вверх
xarakiry
Дата 22.2.2012, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Pfailed Да ваш пример меня тоже удивил.
Обновил на севрере версию с 5.2.11 до 5.2.17 не помогло.
использовал round() , получил нужное число -0.0001
Всем большое спасибо.
--------------------
Все университеты Азербайджана на students.az
PM MAIL WWW   Вверх
skyboy
Дата 22.2.2012, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

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



Цитата(skyboy @  22.2.2012,  09:44 Найти цитируемый пост)
результат округляется

при преобразовании в строку, я имею в виду
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0604 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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