Autor Zpráva
navrapa
Profil
Mam tento kod pro deleni dvou cisel:

$dividend = "100200300400500";
$divident = "1000";

while ($dividend!="0") {
$divisionRemainder = fmod($dividend, $divident);
$answer = $dividend/$divident;
$integralNumber = (int) $answer;
$dividend = $integralNumber;
};

Pro me je dulezite cislo 100200300400500...900... atd. (cislo muze byt libovolne dlouhe) roztrihat na cisla maximalne po trech cislech (100, 200, 300, 400... atd.)

Muj kod je v pohode do cisla 100200300400 a pokud je cislo delsi nez je 100200300400, tak je vysledek deleni spatny a divny a nevim proc.

Pro 100200300400 je vysledek 400, 300, 200, 100.
Pro 100200300400500 je vysledek 500, 592, 52, 416, 1 ... a to je spatne, navic na kazdem serveru to hlasi jine vysledky ... spravne ma byt 500, 400, 300, 200, 100.

Kde je problem?
Diky za odpoved.
ninja
Profil
Typuji ze narazis na maximalni moznou velikost integeru. Zkus to pretypovat na float (double).
navrapa
Profil
Diky moc za tip,
zkousel jsem to a nevim zda dobre, ale porad me to dela blbosti ... ted jsem si cetl dokumentaci na php.net a urcite tam bude vznikat problem s maximalni moznou velikosti integru ... jsou tam navody i na to jak to obejit, ale nic z toho me nejede ... zkusil jsem to takto:

$startA = "100200300400500600";
$startB = "1000";
$dividend = (float) $startA;
$divident = (float) $startB;

while ($dividend!="0") {
$divisionRemainder = fmod ($dividend, $divident);
$answer = $dividend/$divident;
$integralNumber = (int) $answer;
$dividend = $integralNumber;
};
navrapa
Profil
reseni jsem nalezl v tomto kodu:

$dividend = "100200300400500600700800";
$arr = str_split($dividend, 3);
print_r($arr);

diky vsem za pomoc

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: