Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
mar
Založen: 16. 06. 2012 Příspěvky: 610
|
Zaslal: 19. srpen 2012, 15:12:58 Předmět: Denormály |
|
|
Č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 Moje hloupost, IEEE vyžaduje kladnou i zápornou nulu. |
|
Návrat nahoru |
|
 |
|
|
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