Question

Je suis en train d'utiliser un nombre entier de 64 bits dans une variable hardcoded chaîne.

SIMPLIFIÉE Je veux faire quelque chose comme ceci:

$i = 76561197961384956;
$s = "i = $i";

Ce qui devrait conduire à être s:

i = 76561197961384956

Cela ne fonctionne évidemment pas comme PHP jeté les grands entiers à flotter, est donc number_format():

i = 7.65611979614E+16

Alors que plusieurs autres méthodes comme la coulée, etc. échouent, j'ai trouvé et l'utiliser <=> comme ceci:

$s = "i = " . number_format($i, 0, '.', '');

Mais il en résulte être <=>:

i = 76561197961384960

On dirait un problème d'approximation, mais comment résoudre ce problème?

Était-ce utile?

La solution

Tu perds la précision sur la cession, et non sur la conversion de chaîne. Si cette valeur de la variable est en fait hardcoded, et vous ne pouvez pas changer cela, il n'y a rien que vous pouvez faire.

Une ligne comme:

$i = 76561197961384956;

sera toujours une perte de précision. Si vous avez besoin de garder le tout, le stocker dans une chaîne, vous ne pouvez pas stocker comme un entier comme ça et garder tous les chiffres.

Autres conseils

Je pense que le seul moyen est d'utiliser le bcmath fonctions.

  

PHP Pour les mathématiques de précision arbitraire offre la calculatrice binaire qui prend en charge les numéros de toutes tailles et de précision, représentée sous forme de chaînes.

Il est votre $i qui est faux, pas la conversion de chaîne - PHP utilise 32 bits en interne ints

.

pour l'instant seule façon de faire un grand entier mathématiques en php est d'utiliser des extensions bcmath ou qui gèrent gmp un grand nombre sous forme de chaînes. entiers 64bit sont rabotées dans php6.

lors de l'utilisation de grands entiers je les jetai à chaîne ou vous perdrez la précision sur l'attribution (automatique fonte à flotter), puis utiliser sur des bibliothèques de mathématiques de chaîne pour traiter votre numéro plus.

Avez-vous essayé d'utiliser la fonction intval () du PHP?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top