Just nu i M3-nätverket
Gå till innehåll

Göra om till heltal


Dahlgren

Rekommendera Poster

Hej!

 

Jag undrar hur jag kan få detta talet:

 

8.2228386541779E+33

 

...till ett heltal.

 

Någon som vet?

 

Mvh

 

Länk till kommentar
Dela på andra webbplatser

hej

du kanske menar vanlig form i stället för tiopotensform?

 

med eTT svarT TangenT-bord

 

Länk till kommentar
Dela på andra webbplatser

Thomas Tydal

Tja, nåt sånt här i så fall:

 

function VanligForm($tal)

{

list($bas, $tiopotens) = split("E", (string) $tal, 2);

$tiopotens = (int) $tiopotens;

$bas = substr($bas, 0, 1) . substr($bas, 2);

$nollor = $tiopotens - strlen($bas) + 1;

$nyttTal = $bas;

for ($i = 0; $nollor > $i++; $nyttTal .= 0);

return $nyttTal;

}

 

echo(VanligForm(8.2228386541779E+33));

 

 

Länk till kommentar
Dela på andra webbplatser

Tomas Tydal:

Det är redan ett heltal, så vad undrar du?

Inte helt rätt... Det är inte ett heltal (kallat integer på engelska) utan ett flyttal (float).

 

Ett heltal kan inte vara större än 32 bitar (4294967295), utan då blir det ett flyttal.

 

Gren:

Jag antar att detta problem uppstår i och med att du vill skriva ut ett värde?

En mycket enklare metod än Tydals är följande:

$tal = 8.2228386541779E+33;
echo number_format($tal,0,'','');

Tänk dock på att du inte ska räkna vidare på det tal du omvandlat med varken number_format() eller Tydals funktion. Om du skulle göra det, så måste PHP först omvandla värdet till ett nytt flyttal från ett strängvärde, vilket tar en del resurser.

 

Länk till kommentar
Dela på andra webbplatser

Mattias Sandsäter

Det beror ju på om man menar heltal i den matematiska bemärkelsen eller inte..., heltal kan ju vara oändligt stora.

 

 

Länk till kommentar
Dela på andra webbplatser

Thomas Tydal

> Ett heltal kan inte vara större än 32 bitar

> (4294967295),

 

2147483647 blir det, för php:s integers kan inte vara unsigned.

 

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...