Autor Zpráva
Darker
Profil
Tohle není pravda:
1722323149466($x)%1303($y)= 366
Co s tím? Správně by za rovnítkem měla být 0. Je to tím že zadávám příliš velká čísla?

Už je to podruhé co v PHP řeším problémy s dělitelností velkých čísel :(
Problém jsem vyřešil tímhle:
strpos((string)$zdroj/$zmateni,".")!=0

Ale radši bych matematiku řešil matematickými a ne textovými funkcemi.
Majkl578
Profil
Darker:
Je to tím že zadávám příloš velká čísla?
Nejspíš, na 32-bitovém systému je to číslo vyšší než PHP_INT_MAX. na 64-bitovém to funguje správně.
Můžeš zkusit použít rozšíření BCMath nebo GNU Multiple Precision.
Darker
Profil
Majkl578:
Mám windows7x64.
Knihovny si pro tenhle případ nemohu dovolit. Je potřeba aby to bylo co nejkopatibilnější napříč servery.
ShiraNai7
Profil
$x = (float)'1722323149466';
$y = (float)'1303';
var_dump(floor($x-floor($x/$y)*$y));


Výsledek:

float(0)


Zkusil jsem to na 32bit i 64bit "verzi PHP" a stejny vysledek.
Majkl578
Profil
Darker:
Knihovny si pro tenhle případ nemohu dovolit.
Ani vestavěné? BCMath je součástí PHP už od verze 4.
Darker
Profil
Majkl578:
BCMath je součástí PHP už od verze 4.
Tak to jo :)

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:

0