variable fejl

Tags:    php

<pre>
<?
session_start();
If (isset($_SESSION['lng']))
{
if($_SESSION['lng']=="true")
{
$stat=$_SESSION['stat'];
$konto=$_SESSION['lngK'];
?>
<html>
<head><title>Login menu</title>
<link rel="stylesheet" type="text/css" href="ebank.css">
</head>
<body>
<center>
<?
include("lmenu.php");
if($konto==402)
{

///*******connection******////(censured)///

$result=mysql_query("SELECT * FROM servicetager WHERE serviceid='28' and ustat='0' ORDER BY id ASC") or die(mysql_error());


while($data=mysql_fetch_array($result))
{
$til=$data[3];
//echo("$til");
/*for($ytel=1;$ytel<=$til;$ytel++)
{*/
$num=$num+1;
$notil=$num+$til;

$numud=number_format ($num ,0,",",".");
$notilud=number_format ($notil ,0,",",".");
//echo("No: $num   Id: $data[0]   Kontonr:$data[1]<br>");
echo("No fra : $numud   No til: $notilud   Id: $data[0]   Kontonr:$data[1]<br>");
$num=$notil;
/*}*/
}

echo("<br><a name='vinder'></a><br>");

for($ytel=1;$ytel<=35;$ytel++)
{
$ftok=rand(1,2);
// $ftok=2;
if($ftok==1)
{
$fra=rand(0,$notil-1);
}
elseif($ftok==2)
{
$fra=0;
}
$r2=$notil-$fra;
$til=rand(1,$r2);
// $til=rand(1,$notil);

$til=number_format ($til ,0,",",".");
echo($ytel . ". plads Lod nr: $til <br>");
}


}

?>
<br><br>

</center>

</body>
</html>
<?
}
else
{
echo("You is not permite to view this site, sorry :(");
}
}
else
{
echo("You is not permite to view this site, sorry :(");
}
?>
</pre>

Mit problemn er af de nregner en hel del forkert.
den siger at


434.718.383.649.065 -0 = -325.275.234
4.34718383649E+14 - 0 = -325.275.234

hvilket er forkert

hvorfor?
og hvordan løses det?

jeg har et script der linger det fuldstænig bortset fra at der er
283.322.472.418.577 istedet for 434.718.383.649.065 men det virker.



6 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 2 karma
Sorter efter stemmer Sorter efter dato
hvorfor?
Fordi din computer ikke kan regne med så store tal.
for eksempel kan en 32-bit processor kun regne med tal op til 2^32.

og hvordan løses det?
Det ved jeg ikke. Tror ikke du kan.



hvorfor?
Fordi din computer ikke kan regne med så store tal.
for eksempel kan en 32-bit processor kun regne med tal op til 2^32.

og hvordan løses det?
Det ved jeg ikke. Tror ikke du kan.


Scriptet virker fint med 283.322.472.418.577
hvilket er langt over 2 ^32 = 4.294.967.296
-------------------------------------------------------

Det må kun løses på en eller måde

Jeg har lidt svært ved at se hvor i din kode du foretager udregningen, men kan du ikke parse den sådan :
(float)434718383649065 -0;

Det virker hos mig.

MvH

Stefan Svensson
http://www.remote-unlock.dk



hvorfor?
Fordi din computer ikke kan regne med så store tal.
for eksempel kan en 32-bit processor kun regne med tal op til 2^32.

og hvordan løses det?
Det ved jeg ikke. Tror ikke du kan.


Scriptet virker fint med 283.322.472.418.577
hvilket er langt over 2 ^32 = 4.294.967.296
-------------------------------------------------------

Det må kun løses på en eller måde




hvorfor?
Fordi din computer ikke kan regne med så store tal.
for eksempel kan en 32-bit processor kun regne med tal op til 2^32.

og hvordan løses det?
Det ved jeg ikke. Tror ikke du kan.


Scriptet virker fint med 283.322.472.418.577
hvilket er langt over 2 ^32 = 4.294.967.296
-------------------------------------------------------

Det må kun løses på en eller måde

Jeg har lidt svært ved at se hvor i din kode du foretager udregningen, men kan du ikke parse den sådan :
(float)434718383649065 -0;

Det virker hos mig.

MvH

Stefan Svensson
http://www.remote-unlock.dk


$r2=$notil-$fra;

$notil indeholder 434718383649065
og $fra indeholder 0

(float)$r2=(float)$notil-$fra;

virker ikke

(float)$r2=$notil-$fra;

virker ikke

$r2=(float)$notil-$fra;

virker ikke

$r2=float($notil-$fra);

virker ikke

$r2=floor($notil-$fra);

en idé jeg fik, men den virker helelr ikke.


-Thomas
-------------------------------------------------------




Skriver den 434718383649065, hvis du bare laver en echo $notil; ? Så kunne det måske hjælpe at parse den, der hvor variablen bliver tildelt den værdi.

Eller kan du bruge noget af det her:

http://www.php.net/manual/en/ref.bc.php
http://www.php.net/manual/en/ref.gmp.php

MvH

Stefan Svensson
http://www.remote-unlock.dk

[Redigeret d. 05/04-05 21:28:56 af Stefan Svensson]



Skriver den 434718383649065, hvis du bare laver en echo $notil; ? Så kunne det måske hjælpe at parse den, der hvor variablen bliver tildelt den værdi.

Eller kan du bruge noget af det her:

http://www.php.net/manual/en/ref.bc.php
http://www.php.net/manual/en/ref.gmp.php

MvH

Stefan Svensson
http://www.remote-unlock.dk

[Redigeret d. 05/04-05 21:28:56 af Stefan Svensson]


ved en echo skriver den

4.34718383649E+14

-Thomas
-------------------------------------------------------




t