Autor | Zpráva | ||
---|---|---|---|
nethor Profil |
#1 · Zasláno: 6. 4. 2016, 10:30:14
Tohle je zvláštní:
$Value = 0 * -2.1 ; var_dump($Value); // vrací float(-0) (Je to zjednodušený příklad, složitějšího výpočtu, kde mi fce občas vracela -0) |
||
juriad Profil |
#2 · Zasláno: 6. 4. 2016, 10:45:36
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 |
#4 · Zasláno: 7. 4. 2016, 09:20:08
Zajímavé, díky za vysvětlení.
|
||
Časová prodleva: 9 let
|
0