.[ ČeskéHry.cz ].
Denormály

 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> C / C++
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
mar



Založen: 16. 06. 2012
Příspěvky: 610

PříspěvekZaslal: 19. srpen 2012, 15:12:58    Předmět: Denormály Odpovědět s citátem

Čau,

řeším teď jeden problém: při konverzi z double (velmi malé číslo) na float se mi objevují ve VS/C++ denormály (a to mám fp model strict).
Nepoužívám SSE. A dělá to i v debugu bez optimalizací.
Doteď jsem žil v omylu, že x87 automaticky tato čísla nuluje při fst do floatu.
Obcházím to teď ručne, ale to se mi vůbec nelíbí.
Nějaké nápady?

Díky

EDIT:
kód:

float f;

int main()
{
   double d = -1e-300;
   f = (float)d;
   printf("f = %0.6f\n", f);
   if ( !f )
      f = 0.0f;
   printf("f = %0.6f\n", f);
   return 0;
}


zobrazí:

kód:

f = -0.000000
f = 0.000000


binární reprezentace obou floatů je jiná...

EDIT2: Ok není to denormál, ale zachovává znaménko. I tak bych byl radši, kdyby to FPU převedlo na kladnou nulu Smile Moje hloupost, IEEE vyžaduje kladnou i zápornou nulu.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> C / C++ Časy uváděny v GMT + 1 hodina
Strana 1 z 1

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra
Nemůžete odpovídat na témata v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete hlasovat v tomto fóru


Powered by phpBB © 2001, 2005 phpBB Group


Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna