Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Bardzo wielekie liczby!, Reprezentacja typów danych
lusaczek
post
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 1
Dołączył: 20.03.2007

Ostrzeżenie: (0%)
-----


witam!
mam dwie liczby:

- 591286729879
- 956722026041

..dodajac je wychodzi cusss takiego: 1.54800875592E+012 (float) przekonwertowanie tego do integer nie ma sensu bo lliczba jest juz poza zakresem tego typu...

jak to rozwiazac? dodam ze server nie ma wkapilowanej obslugi GMP (liczby całkowite o dużej wielkości)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
Kicok
post
Post #2





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

Ostrzeżenie: (0%)
-----


BC" title="Zobacz w manualu PHP" target="_manual
Go to the top of the page
+Quote Post
kubarek
post
Post #3





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 19.02.2007

Ostrzeżenie: (0%)
-----


możesz też skorzystać z funkcji, którą przed chwilą napisałem:
  1. <?php
  2. function exp_to_str($big_value){
  3. //tutaj przed kropką, plusem i minusem powinny być ukośniki
  4. // ale nie wiem czemu są albo dwa albo ich nie ma
  5. $pattern='#([0-9.]+)E(+|-)([0-9]+)#is'; 
  6. preg_match_all($pattern, $big_value, $matches);
  7.  
  8. $nr=$matches[1][0];
  9. $sign_of_power=$matches[2][0];
  10. $power=$matches[3][0];
  11.  
  12. if ($sign_of_power=='+'){
  13. $nr=str_replace('.', '', $nr);
  14. $how_many_zeros=($power-strlen($nr))+1;
  15. for ($i=0; $i<$how_many_zeros; $i++){
  16. $nr = $nr.'0';  
  17. }
  18. return $nr;
  19.  
  20. }else if($sign_of_power=='-'){
  21. $nr=str_replace('.', '', $nr);
  22. $how_many_zeros=abs($power-1);
  23.  
  24. for($i=0; $i<$how_many_zeros; $i++){
  25. $nr = '0'.$nr;
  26. }
  27. return '0.'.$nr;
  28. }
  29. }
  30. ?>

zamienia liczbę w postaci wykładniczej na tę w postaci bardziej normalnej ;-)
czyli dla twojego przykładu zadziała bezbłędnie, tak samo jak bcadd():
  1. <?php
  2. echo exp_to_str($l1+$l2); echo '<br />';
  3. echo bcadd($l1, $l2);
  4. ?>


Ten post edytował kubarek 29.04.2007, 20:23:11
Go to the top of the page
+Quote Post
lusaczek
post
Post #4





Grupa: Zarejestrowani
Postów: 11
Pomógł: 1
Dołączył: 20.03.2007

Ostrzeżenie: (0%)
-----


Cytat(Kicok @ 29.04.2007, 19:52:03 ) *


...krótko i na temat dzieki! ....w zasadzie nie wiem czemu nie dokopalem sie do tego w manualu!

Cytat
możesz też skorzystać z funkcji, którą przed chwilą napisałem:


...tutaj w zasadzie nie potrzeba pisac od razu jakies funkcji to tego celu (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

pozdrawiam!
Go to the top of the page
+Quote Post
kubarek
post
Post #5





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 19.02.2007

Ostrzeżenie: (0%)
-----


Cytat
...tutaj w zasadzie nie potrzeba pisac od razu jakies funkcji to tego celu
oczywiście, że nie trzeba
o tym, że istnieje BC dowiedziałem się po tym, jak funkcję napisałem ;-)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.09.2025 - 04:35