Autor Zpráva
nethor
Profil
Tohle je zvláštní:
$Value  =   0 *  -2.1     ;
var_dump($Value);     // vrací   float(-0)
 
Nevíte, proč vrací -0 a ne 0 ?

(Je to zjednodušený příklad, složitějšího výpočtu, kde mi fce občas vracela -0)
juriad
Profil
Na wiki o tom máš celý článek. en.wikipedia.org/wiki/Signed_zero

In IEEE 754 binary floating point numbers, zero values are represented by the biased exponent and significand both being zero. Negative zero has the sign bit set to one. One may obtain negative zero as the result of certain computations, for instance as the result of arithmetic underflow on a negative number, or −1.0*0.0, or simply as −0.0.

Není se však čeho obávat, -0 == 0 v každém programovacím jazyku
Keeehi
Profil
Protože floaty mohou mít negativní nulu. Je to důsledek toho jak jsou floaty reprezentované v paměti počítače. První bit určuje znaménko a zbytek hodnotu čísla. Je to podobné jako přímý kód pro zápis záporných čísel. Tam taky existuje záporná nula a díky tomu je rozsah pro osmibitové číslo od -127 do 127 na rozdíl od doplňkového kódu kde je jen jedna nula a rozsah je od -127 do 128

juriad:
Není se však čeho obávat, -0 == 0 v každém programovacím jazyku
Rozdíly tam být mohou. Například u dělení můžeš dostat plus nebo mínus nekonečno.
Jsem si vědom toho že v matematice dělení nulou není definováno.

Případně arc tangent
3v4l.org/bHhDE
nethor
Profil
Zajímavé, díky za vysvětlení.

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