Just nu i M3-nätverket
Jump to content

Göra om till heltal


Dahlgren

Recommended Posts

Hej!

 

Jag undrar hur jag kan få detta talet:

 

8.2228386541779E+33

 

...till ett heltal.

 

Någon som vet?

 

Mvh

 

Link to comment
Share on other sites

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));

 

 

Link to comment
Share on other sites

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.

 

Link to comment
Share on other sites

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.

 

 

Link to comment
Share on other sites

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.

 

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...