-
[type] division et type
salut,
j aimerais savoir comment caster ou specifier mes données de manière a avoir u resultat correct.
sans perte de données si possible.
en entrée :
1 float -> F
1 DWORD -> DW
1 unsigned long -> UL
en sortie :
1 float -> FOUT
Code:
FOUT = (UL / DW) * (F);
-
Tourne ton opération autrement ...
Une opération avec un des membres réel retourne un réel.
-
Je connais pas de double word en C. Si par là, tu entends un entier codé sur 32 bits, les type int ou long (sur ma machine) font l'affaire.
Dans ton cas particulier, (UL/DW) sera calculé en premier. Il s'agit d'une division entière (note que 3UL/2 donne 1UL et pas 1.5), dont le résultat de type unsigned long sera converti dans le type float avant multiplication avec F.
Aucune convertion dégradante n'est mis en oeuvre dans ton calcul, mais la division entière retourne un entier. Par ailleurs, les calculs utilisant des flottants ont une précision qui dépend de leur type. En effet, sur ma machine, une expression constante de type double est représentée avec une précision d'environ 15 chiffres significatifs. Des erreurs d'arrondi peuvent intervenir. Par exemple, il est impossible de représenter 1.0/3.0 de manière exacte avec une expression de type float ou double.
Thierry