Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Bardzo wielekie liczby!
Forum PHP.pl > Forum > PHP
lusaczek
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)
kubarek
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. ?>
lusaczek
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 smile.gif

pozdrawiam!
kubarek
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 ;-)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.