Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: noacja wykladnicza
Forum PHP.pl > Forum > PHP
1010
Jak zamienić liczbę ze zmiennej na zapis w notacji wykładniczej?
php programmer
podaj konkretny przykład,
żeby wiadomo było o co ci chodzi

liczba_początkowa
liczba_zmodyfikowana
1010
np w zmiennej mamy liczbe 4000 i zamienia to na 4 * 10^3
php programmer
hm ale to chyba nie każdą liczbe tak że da?
a jak przekształcisz liczbę 114 ?
1010
1,14 * 10^2
php programmer
wiem jak wziąść wykładnik
wykładnik = ilość znaku twojej liczby minus jeden
np 12345 składa się z 5 znaków wieć bedzie 10^4

a dalej to już proste twoją liczbę 12345 dzielisz przez 10^4
i masz pierwszy człon czyli 1,2345
a więc w końcowym efekcie masz
1,2345 * 10^4

Edit: poprawka kodu

  1. <?php
  2. function Przeksztalcenie($liczba){
  3. $wykladnik = strlen($liczba)-1;
  4. $mnoz = pow(10,$wykladnik);
  5. $pierwszy_czlon = $liczba / $mnoz;
  6. return $pierwszy_czlon. ' * 10^'.$wykladnik;
  7. }
  8.  
  9. echo Przeksztalcenie(12345);
  10. ?>
1010
Dzięki bardzo... A jak taką operacje wykonać odwrotnie?
php programmer
no to już wogóle żaden problem
  1. <?php
  2. $odwrtonie = $pierwszy_czlon * pow(10,$wykladnik);
  3. ?>


a jeśli masz to w stringu to musisz użyć dodatkowo wyr. reg do rozbicia na człony

tzn

  1. <?php
  2. $odwrotnie = ' 1,2345 * 10^4 ';
  3. ?>


poprzez preg_match wyciągasz ze stringa pierwszą 1,2345 i ostatnia część 4

i dopiero wtedy

  1. <?php
  2. $odwrtonie = $pierwszy_czlon * pow(10,$wykladnik);
  3. ?>
dr_bonzo
A ja stworzylem cos takiego
  1. <?php
  2.  
  3. $numbers = array( 1234, 1.02323, 123.223, 0.000123 );
  4.  
  5. foreach ( $numbers as $nr )
  6. {
  7. $number_in_scientific_format = sprintf( "%e", (float)$nr );
  8. list( $base, $exp ) = explode( "e", $number_in_scientific_format );
  9.  
  10. print( "$base * 10^$exp" . "<br />" );
  11. }
  12.  
  13. ?>
1010
  1. <?php
  2. function Przeksztalcenie($liczba){
  3. $wykladnik = strlen($liczba)-1;
  4. $mnoz = pow(10,$wykladnik);
  5. $pierwszy_czlon = $liczba / $mnoz;
  6. return $pierwszy_czlon. ' * 10^'.$wykladnik;
  7. }
  8.  
  9. echo Przeksztalcenie(0.0000001);
  10. ?>


return: 1E-15 * 10^8

cos nie pasi...
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.