PDA

View Full Version : [PHP] round(-0.2) = -0. Perchè???


AMD_GO
15-12-2010, 18:06
Salve ragazzi.....avrei una domanda. Perchè in php

round(-0.2) = -0

io vorrei 0 e non -0 !!!!!!!!!!!!!!!!!!

AMD_GO
15-12-2010, 18:11
risolto.

(int)round(-0.2) = 0

cmq sarebbe bello sapere perchè senza il cast esplicito da -0....forse perchè lo tratta ancora come float....

Supdario
15-12-2010, 23:19
Sì, la funzione "round" prende come parametro un float e restituisce un float, e come forse sai i float si possono rappresentare anche come +0 e -0.

dojolab
16-12-2010, 08:04
Sì, la funzione "round" prende come parametro un float e restituisce un float, e come forse sai i float si possono rappresentare anche come +0 e -0.

Esatto.
Puoi usare anche

intval(round(-0.2))

AMD_GO
16-12-2010, 10:42
Infatti me lo ero immaginato.....ma a che pro restituire -0 ??

Supdario
16-12-2010, 10:46
Infatti me lo ero immaginato.....ma a che pro restituire -0 ??

E' più che altro una cosa tecnica della FPU... In teoria dovrebbe indicare che un numero molto piccolo negativo è stato arrotondato a 0 (ad esempio -0.000000000000000000000001 verrebbe arrotondato a -0).
Per maggiori info guarda qui:
http://en.wikipedia.org/wiki/Signed_zero