Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Познание ОГРОМНЫХ чисел с плавающей точкой

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
твой Иисус
Отправлено: 20 Апреля, 2017 - 21:24:17
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Апр. 2017  


Помог: 0 раз(а)




Доброго времени суток.
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4. $i = 0.044444444444411116012848124172;
  5. echo $i; // 0.044444444444411
  6.  


Тип float не может быть больше 15 символов после точки.
Но если переменную $i задать как строку:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4. $i = '0.044444444444411116012848124172';
  5. echo $i; // 0.044444444444411116012848124172
  6.  


Далее вопрос. Как заставить работать такую конструкцию, что бы сохранить точность. Пробовал разные способы например sprintf('%.30f', $i); но ничего не получилось.
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4. $i = 0.044444444444411116012848124172;
  5. do {
  6.    $i = $i + 0.000000000000000000000000000001;
  7.    echo $i;
  8. } while ($i < 0.044444444444411116012848124283);
  9.  

Заранее спасибо.
 
 Top
OrmaJever Модератор
Отправлено: 20 Апреля, 2017 - 21:46:54
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




даю 95% что вы не правильно решаете задачу, такие огромные числа не нужны. Опишите задачу, тогда видно будет


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
твой Иисус
Отправлено: 20 Апреля, 2017 - 21:59:20
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Апр. 2017  


Помог: 0 раз(а)




OrmaJever пишет:
даю 95% что вы не правильно решаете задачу, такие огромные числа не нужны. Опишите задачу, тогда видно будет

Особой задачи нет, так как конечный результат считаю невозможным. Для меня это практика. (учу пхп пару дней). Ну а точность нужна для того что бы сохранять sha256, точной строки.
 
 Top
Мелкий Супермодератор
Отправлено: 21 Апреля, 2017 - 11:33:18
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




твой Иисус пишет:
что бы сохранить точность.

ieee754 и точность взаимоисключающие вещи по своему определению.

Для точной математики в php есть пара библиотек http://php.net/manual/en/refs.math.php


-----
PostgreSQL DBA
 
 Top
твой Иисус
Отправлено: 21 Апреля, 2017 - 13:52:55
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Апр. 2017  


Помог: 0 раз(а)




Мелкий пишет:
твой Иисус пишет:
что бы сохранить точность.

ieee754 и точность взаимоисключающие вещи по своему определению.

Для точной математики в php есть пара библиотек http://php.net/manual/en/refs.math.php

Спасибо, попробую разобраться.
P.S я аж воспылал.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB