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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Огромное число! Как привести в нормальный вид? 
:(
    Опции темы
Gtaman
Дата 1.9.2006, 21:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Проблема собственно в следующем:

Скрипт должен посчитать некую величину, для этого сначала идет возведение числа 1137 в степень 5.5, получается огромное число, которое обозначается видом 2.46032951211E+016..... Из за этого дальнейшая обработка этого числа идет не правильно, и конечное число получаеться очень маленьким, хотя должно получиться больше.
PM MAIL   Вверх
Akina
Дата 1.9.2006, 21:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


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

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



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


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Gtaman
Дата 1.9.2006, 21:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Последовательность действий изменять не целесообразно в моем случае. А что за библиотека? Если это единственный выход, то я хотел бы узнать где ее взять.
PM MAIL   Вверх
ewolf
Дата 1.9.2006, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 15.8.2006
Где: г. Москва

Репутация: 8
Всего: 18



PM MAIL ICQ   Вверх
Mal Hack
Дата 1.9.2006, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


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

Репутация: 122
Всего: 261



Цитата(Gtaman @  1.9.2006,  22:18 Найти цитируемый пост)
Из за этого дальнейшая обработка этого числа идет не правильно, и конечное число получаеться очень маленьким, хотя должно получиться больше. 

Нормальная запись числа. Дальнейшая работа может быть неправильной из-за ошибки при программировании.
PM ICQ   Вверх
rMaveric
Дата 1.9.2006, 22:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 3
Всего: 6



100% ошибка в коде.
выложи код.


--------------------
Моя благодарность не будет иметь границ. в определенных рамках конечно ;)
---
Веду IT блог
PM MAIL WWW ICQ   Вверх
Gtaman
Дата 2.9.2006, 00:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Вот код:

Код

$a = rand(0,200);
$b = (pow(1137,55 / 10)) / rand(0,$a); /* Огромное число */
$c = pow(11.2,10 / 10);
$d = $b * ($c / 10); /* Вот сдесь собственно и нужно число $b, которое равно 2.46032951211E+016, но $d получаеться очень очень маленьким! где то так: 1, 3, 7 итд.... */

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


Ustix IT Group
****


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

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



Gtaman, не уверен в точности и правильности чисел, но может тебе так надо:
Код

<?php

$a = rand(1, 200);
$b = bcdiv(bcpow(1137, (55 / 10), 10), rand(1,$a), 0);
$c = bcpow(11.2, (10 / 10));
$d = bcmul($b, ($c / 10));

?>



--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
rMaveric
Дата 2.9.2006, 11:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 3
Всего: 6



Код

<?php

$a = rand(0,200);
echo "A = $a<br>";
$b = (pow(1137,55 / 10)) / rand(0,$a); /* Огромное число */
echo "B = $b<br>";
$c = pow(11.2,10 / 10);
echo "C = $c<br>";
$d = $b * ($c / 10); /* Вот сдесь собственно и нужно число $b, которое равно 2.46032951211E+016, но $d получаеться очень очень маленьким! где то так: 1, 3, 7 итд.... */
echo "D = $d<br>";
printf("%.3f", $d);


?>m



Код

A = 56
B = 2.3731150393247E+15
C = 11.2
D = 2.6578888440437E+15
D = 2657888844043674.500


Gtaman, не вижу проблемы. У меня все выдает идеально
Исключая возможную ситуацию деления на 0 при подсчете B. Где тут маленькое число?

А использование библиотеки больших чисел только точность даст, не более.


--------------------
Моя благодарность не будет иметь границ. в определенных рамках конечно ;)
---
Веду IT блог
PM MAIL WWW ICQ   Вверх
Gtaman
Дата 2.9.2006, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



-=Ustas=-, что значат эти функции и эта десятка после того как (55 / 10)?

Код

$b = bcdiv(bcpow(1137, (55 / 10), 10), rand(1,$a), 0);

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


Опытный
**


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

Репутация: 3
Всего: 6



http://www.php.net/manual/ru/ref.bc.php

Библиотека работы с большими числами. Но она есть далеко не у всех провайдеров.


--------------------
Моя благодарность не будет иметь границ. в определенных рамках конечно ;)
---
Веду IT блог
PM MAIL WWW ICQ   Вверх
Gtaman
Дата 2.9.2006, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



rMaveric, я на денвере, php 4.3.1 тестирую..... но я непонимаю, почему у тебя получаеться, а у меня нет?

Добавлено @ 11:32 
Кстати, 
rMaveric, по твоему примеру у меня получилось нормально, но это число надо не выводить, а оно потом еще юзаеться.
PM MAIL   Вверх
rMaveric
Дата 2.9.2006, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 3
Всего: 6



Так и пусть юзается в чем проблема??? или тебя смущает форма записи 2.6578888440437E+15 ???


--------------------
Моя благодарность не будет иметь границ. в определенных рамках конечно ;)
---
Веду IT блог
PM MAIL WWW ICQ   Вверх
Gtaman
Дата 2.9.2006, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



rMaveric, нет меня не смущает нисколько. Просто некорректно оно юзаеться..... оно наверное принимаеться за 2 целых всего.... Во всяком случае результат получаеться как будто юзаеться не огромное число, а маленькое очень. Между тем, если это огромное число в нормальной форме записи, т.е. например оно равно 349150728114, то все работает корректно...
PM MAIL   Вверх
rMaveric
Дата 2.9.2006, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 3
Всего: 6



Цитата(Gtaman @  2.9.2006,  12:10 Найти цитируемый пост)
оно наверное принимаеться за 2 целых всего

Не понял.

Скажем так. В том моменте который ты дал все нормально и все работает на 100%. Число показывается достаточно большое и в маленькое оно само по себе не превратится.

Показуй куд где у тебя создается ошибочная ситуация, тоесть результат от операции явно не ожиданный.


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


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

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