большие числа

DIS

Новичок
большие числа

у меня такая задача:

нужно возвести в степень большое число и получить ещё большее число..
выделить от этого числа целую часть.

например на калькуляторе:

999999999999^2.34 = 12022644346145996070556098539.041

и моё число 12022644346145996070556098539

но это дело вылетает за пределы инта и даже бигинта и php с mysql никак не могут с этим справиться..

хотя может и могут, но я не знаю как..

подскажете?
 

Wicked

Новичок
[m]gmp[/m]

-~{}~ 28.03.08 12:23:

или [m]bc[/m]

а в mysql есть тип decimal, но я не знаю как там операции с ним делаются, и сохраняют ли они точность...
 

DIS

Новичок
так.. пересобрал сервак с bc...

echo bcpow('99999999','2.36');

выводит 9999999800000001

что совсем не правда:)

чего делать-то?
помогите плиз.
 

DIS

Новичок
тааак... пересобрал сервак с gmp

echo gmp_strval(gmp_pow("99999999",2.36));

выводит то же самое: 9999999800000001

в чём тут дело?

вообще возможно произвести такие операции на php?
 

tony2001

TeaM PHPClub
правильный вопрос - "вообще возможно произвести такие операции на C?"
 

rotoZOOM

ACM maniac
Да запросто.
Тебе надо найти a^b, причем и a и b числа с произвольной точностью.
Это можно вычислить, как exp(b*ln(a)), где exp - это экспонента,
ln - это натуральный логарифм.
И экспонента и натуральный логариф лехко находятся с нужной точностью разложением в ряд Тейлора.
:))
 

Wicked

Новичок
И экспонента и натуральный логариф лехко находятся с нужной точностью разложением в ряд Тейлора.
который с нужной вероятностью будет показывать числа A или A+1, когда результат ожидается близким к целому числу A :)
 

DIS

Новичок
а если нужна 100%-ная вероятность?
мне нужно выделить челую часть!
 

Beavis

Banned
причем тут вероятность? тебе объяснили как это делать, читай про ряды Тейлора - там несложно
 

DIS

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

Beavis

Banned
DIS
с чего ты взял что результат может отличаться на единицу от нужного?
 

DIS

Новичок
потаму что при разложении в ряд тейлора точность тем выше чем дальше я его раскладываю. так?

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

посему этот вариант даже не рассмартивается,
а сама задача отправлена в урну в связи с отсутствием времени на её решение..

всем спасибо..
 
Сверху