sandrinoo Posté 28 Octobre 2015 Partager Posté 28 Octobre 2015 Comme d'hab, quand je tourne en rond plus d'une heure et que je trouve rien sur internet pour m'aider je me tourne naturellement vers mon forum préféré : Problèmes du jour : echo substr(555666655447855333669999554466,-1,1); me donne 9 et pas 6. Pourquoi ???? et : echo 19160205962652799215665*3; me donne la notation scientifique : 95.7480617887958E+22. Comment avoir le chiffre normal en entier ? Rien trouvé sur internet de concluant... Lien vers le commentaire Partager sur d’autres sites More sharing options...
BlackPage Posté 28 Octobre 2015 Partager Posté 28 Octobre 2015 Salut, Si tu veux faire un substr sur ton grand nombre il faudrait peut-être le forcer en tant que chaine : $a = (string)555666111222333444555; ou $a = '' . 555666111222333444555; echo substr(a, -1 1); Ca devrait fonctionner comme ca. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Portekoi Posté 28 Octobre 2015 Partager Posté 28 Octobre 2015 Tes chiffres sont bien trop grands. Je ne vois pas de solution. Je pense vraiment que tu devrais revoir la conception de ton code. Dans ma carrière, je n'ai jamais eu à gérer ce genre de cas et pourtant, je travaille dans une banque. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dan Posté 28 Octobre 2015 Partager Posté 28 Octobre 2015 Pour une opération telle que 19160205962652799215665*3 je ne vois que "bc" en natif. # bc bc 1.06.95 Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc. This is free software with ABSOLUTELY NO WARRANTY. For details type `warranty'. 19160205962652799215665*3 57480617887958397646995 La taille d'un entier est dépendant de la plate-forme, cependant, une valeur maximale d'environ 2 milliards est habituelle (cela correspond à 32 bits signés). Les plateformes 64-bit ont habituellement une valeur maximale d'environ 9E18, sauf pour Windows, qui est toujours en 32 bit. PHP ne supporte pas les entiers non-signés. La taille d'un entier peut être déterminée en utilisant la constante PHP_INT_SIZE, et la valeur maximale, en utilisant la constante PHP_INT_MAX depuis PHP 4.4.0 et PHP 5.0.5. Donc sur un serveur en 64 bits, la limite pour un entier signé est égale à : 9223372036854775807 Qui correspond à 2^64 -1 (64 représentant 8 octets, exprimés en bits) vu que PHP_INT_SIZE est défini à 8 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dan Posté 28 Octobre 2015 Partager Posté 28 Octobre 2015 Et pour info : echo substr("555666655447855333669999554466",-1,1); retourne bien 6 echo substr((string)555666655447855333669999554466,-1,1); ou echo substr(555666655447855333669999554466,-1,1); retournent 9 vu que le nombre entier est limité par php à 9E18 ... les derniers caractères sont supprimés. Lien vers le commentaire Partager sur d’autres sites More sharing options...
sandrinoo Posté 28 Octobre 2015 Auteur Partager Posté 28 Octobre 2015 Merci à vous 3. Je pensais pas que php était une aussi petite nature ! Dans ma carrière, je n'ai jamais eu à gérer ce genre de cas et pourtant, je travaille dans une banque A portekoi : pourtant les banques ont l'air de faire dans la démesure ces temps-ci ! Merci encore à tous : je vais revoir mon code pour essayer de limiter ce nombre. Il est vrai que mes codes sont parfois un peu compliqués et ils mériteraient d'être simplifiés ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Portekoi Posté 28 Octobre 2015 Partager Posté 28 Octobre 2015 HS : Ce ne sont pas vraiment les banques mais l'état. Regarde la loi Eckert sur les comptes dit "inactifs" Je ne pense pas que cela soit ton code mais plus ta conceptualisation de tes problématiques. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dan Posté 28 Octobre 2015 Partager Posté 28 Octobre 2015 Je pensais pas que php était une aussi petite nature ! J'aimerais tout de même voir ce type de montant sur mon relevé de compte Je laisserais dans ce cas bien volontiers à l'état un pourboire qui lui permettrait d'apurer sa dette ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
sandrinoo Posté 28 Octobre 2015 Auteur Partager Posté 28 Octobre 2015 (modifié) A portekoi : pour pouvoir conceptualiser il faut avoir le cerveau qui va avec ! Et être un peu matheuse sur les bords ! et moi étant plutôt graphiste... Modifié 28 Octobre 2015 par sandrinoo Lien vers le commentaire Partager sur d’autres sites More sharing options...
sandrinoo Posté 28 Octobre 2015 Auteur Partager Posté 28 Octobre 2015 (modifié) A Portekoi : j'étais pas au courant de la loi Eckert Modifié 28 Octobre 2015 par sandrinoo Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant