sprintf(), en detail...

Eléphant du PHP | 226 Messages

26 janv. 2012, 18:39

Je sais ce que veut dire "l'argument est traité comme un entier" mais je ne sais pas ce qu'il veut dire par "et présenté comme...". Qui pourrait m'expliquer ceci.
Djun, L'inoubliable et l'incontournable

ViPHP
ViPHP | 2287 Messages

26 janv. 2012, 18:49

Je sais ce que veut dire "l'argument est traité comme un entier" mais je ne sais pas ce qu'il veut dire par "et présenté comme...". Qui pourrait m'expliquer ceci.
C'est un concept pas évident à saisir si tu ne programmes qu'en php, et ça touche surtout les nombres. Pour un système informatique, chaque nombre peut avoir plusieurs représentations différentes (pour la même valeur numérique, plusieurs formes d'affichage possible).

Voir ici pour + d'infos : http://fr.wikipedia.org/wiki/Base_(arithm%C3%A9tique)

Quelques exemples avec le nombre (décimal) 15 :

Code : Tout sélectionner

php > echo sprintf('%s',15); 15 php > echo sprintf('%u',15); 15 php > echo sprintf('%x',15); f php > echo sprintf('%o',15); 17
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Eléphant du PHP | 226 Messages

26 janv. 2012, 19:37

Ceux qui me trouble c'est que je ne comprends pas le e et g. Je ne sais pas c'est quoi un flotteur, virgule flotteur consciente local et non-localisé utilisée, et un decimal non signé. Bref, Je suis perdu! @.@
Djun, L'inoubliable et l'incontournable

ViPHP
ViPHP | 2287 Messages

26 janv. 2012, 20:39

Ceux qui me trouble c'est que je ne comprends pas le e et g. Je ne sais pas c'est quoi un flotteur, virgule flotteur consciente local et non-localisé utilisée, et un decimal non signé. Bref, Je suis perdu! @.@
Tes deux nouvelles questions nous renvoient vers les maths et la langue de shakespeare (je ne peux que te conseiller de t'y mettre si tu veux approfondir ton apprentissage de la programmation, l'anglais est quasi-incontournable).

Tu peux oublier le "flottante" si ça ne te parle pas, ce n'est pas bien important :) Il est juste bon de connaître le mot, car en anglais et dans beaucoup de langages de programmation, ayant presque tous un vocable anglais, on l'appelle souvent un float (page de manuel php correspondante : http://fr2.php.net/manual/fr/language.types.float.php ).(reste sur "nombre à virgule" ou "nombres décimaux").

"non-localisé" c'est parcequ'on parle de représentations de nombre et il faut pour cela sortir de sa coquille franco-française. La localisation désigne l'adaptation aux paramètres régionaux de l'utilisateur (par exemple, unité/format monétaire, unité métrique, formatage de nombres, ...) . Pour les français, un nombre à virgule prend toujours une virgule... Ce n'est pas pareil par exemple pour un américain, qui écrira ce même nombre selon ses conventions (avec un point au lieu de la virgule). Non-localisé, ici, signifie donc que le français comme l'américain seront servis par cette fonction à la même enseigne.

décimal (quasiment un synonyme de float, ou flottant, ou nombre à virgule) se définit par rapport à entier, et c'est de l'arithmétique de base (wikipédia peut t'aider à approfondir). Un nombre entier ne peut jamais avoir de virgule (ou partie décimale), un nombre décimal en revanche oui.

non-signé signifie que le signe (positif ou négatif) du nombre fourni n'est pas pris en compte, il est considéré comme positif de manière arbitraire (puisque aucune information de signe ne sera utilisée).

-------------------------------
Tout ça est un peu nébuleux en php, cependant dans d'autres langages de programmation (qui sont d'ailleurs à l'origine de la fonction sprintf() telle que tu la découvres) ça prend plus de sens car toutes ces variations définissent des types de données différents dont le programmeur doit avoir conscience. Php étant peu sensible aux types, un nombre est "juste un nombre" et certains de ces concepts perdent de leur sens.
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Eléphant du PHP | 226 Messages

26 janv. 2012, 21:49

Merci beaucoup!
Djun, L'inoubliable et l'incontournable