![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
chiffa |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 734 Регистрация: 11.11.2003 Репутация: -1 Всего: -1 |
Добрый день. После определенного ряда вычислений получаю довольно длинное число, которое выводится как: 1.0542197938321E-081
Подскажите как его можно вывести полностью?.... |
|||
|
||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
полностью его скорее всего не вывести. Если поинтересоваться способом хранения вещественных чисе в момпьютере, то можно обнаружить, что число хранится в виде мантиссы - обычного целого числа и порядка - еще одного целого. нормальное число получается когда маттиссу умножают на 2 в степени "порядок", с некоторыми непринципиальными выкрутасами. Так что всех значащих цифр числа компьютер просто не хранит ;)
для любителей точных вычислений можно порекомендовать модуль bcmath - он работает с числами как со строками и может оперировать числами со значительно бОльшим количеством знаков. -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
chiffa |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 734 Регистрация: 11.11.2003 Репутация: -1 Всего: -1 |
спасибо за ответ! а можно ли как то полученое 1.0542197938321E-081 перевести в строку (с полным количеством цифр)?
|
|||
|
||||
Avrely |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 239 Регистрация: 15.3.2007 Репутация: нет Всего: 2 |
http://www.icosaedro.it/bignumbers/BigInt.htm
![]() BigINT может отобразить все число Это сообщение отредактировал(а) Avrely - 10.3.2010, 12:15 |
|||
|
||||
Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
Мда, 2003й год однако... http://php.net/sprintf http://php.net/number_format -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
chiffa |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 734 Регистрация: 11.11.2003 Репутация: -1 Всего: -1 |
Avrely, пасиба! то что нужно!
Единственный вопрос: не подскажешь как там провести деление?
ругается Fatal error: Cannot pass parameter 2 by reference in |
|||
|
||||
Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
-------------------- Мир это Я. Живее всех живых. |
|||
|
||||
chiffa |
|
||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 734 Регистрация: 11.11.2003 Репутация: -1 Всего: -1 |
Fortop, гм... признаю свою вину, меру, степень, глубину... (с)
Но возник небольшой вопрос, возможно даже не так из программирования, как из математики.... Допустим я использую
результат получаю - 47583784601875998294946 при выполнении
результат отличается от исходного - 58745412554152541256635080883940 то что было 58745412554152541256636121255615 то что стало 58745412554152541256635080883940 насколько я понимаю разница получается из-за округления при делении. То есть если использую
то результат после умножения получаю такой же как исходный. Но после деления - 47583784601875998294946.84270106441857968620907514450258381497351271625.......... а мне нужно только целое число round ($to_barss,0) возвращяет почему то 0... Подскажите кто знает как реализовать деление без округления?.... Заранее всем спасибо ![]() |
||||||
|
|||||||
Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
точность вычислений установить требуемую
-------------------- Мир это Я. Живее всех живых. |
|||
|
||||
chiffa |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 734 Регистрация: 11.11.2003 Репутация: -1 Всего: -1 |
так у меня ж прописано 100
bcscale насколько я понял одно и то же что и напрямую прописать 100 или я тебя неправильно понял? |
|||
|
||||
Fortop |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
не обратил внимания.
Округления к сожалению нет, но его можно написать самостоятельно. Сравнивать числа типа float на равенство - нельзя. Обычно обходятся сравнением на < или > c определенной погрешностью. Например
-------------------- Мир это Я. Живее всех живых. |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |