Autor | Zpráva | ||
---|---|---|---|
navrapa Profil |
#1 · Zasláno: 13. 1. 2008, 15:02:56
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 |
#2 · Zasláno: 13. 1. 2008, 15:10:01
Typuji ze narazis na maximalni moznou velikost integeru. Zkus to pretypovat na float (double).
|
||
navrapa Profil |
#3 · Zasláno: 13. 1. 2008, 16:05:39
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 |
#4 · Zasláno: 13. 1. 2008, 16:48:11
reseni jsem nalezl v tomto kodu:
$dividend = "100200300400500600700800"; $arr = str_split($dividend, 3); print_r($arr); diky vsem za pomoc |
||
Časová prodleva: 16 let
|
0