Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jean-Marc Bourguet
Kira writes:
Est-ce que le comportement de : (int)(40 * 1.50) est défini ?
Et est-ce assuré de retourner toujours 60 ?
Je crois que oui mais indirectement par la contrainte sur le nombre de chiffres significatifs et donc que 40 * 1.50 n'est pas assure de valoir (double)(60).
En pratique, je ne connais pas d'implementation des nombres en virgule flottante qui n'ait pas un resultat exact dans ce cas (en base 2, 10 et 16 qui a ma connaissance sont les seules a etre et meme a avoir ete employee, le calcul est exact; ok, j'ai bien entendu des rumeurs au sujet d'un ordinateur russe des annees 50 ou 60 qui fonctionnait en ternaire, mais je ne sais pas s'il y avait des flottants dessus).
Change le 1.5 par quelque chose qui ne soit pas un entier divise par une puissance de deux, et ca devient plus amusant.
A+
-- Jean-Marc FAQ de fclc: http://www.isty-info.uvsq.fr/~rumeau/fclc Site de usenet-fr: http://www.usenet-fr.news.eu.org
Kira <none@none.com> writes:
Est-ce que le comportement de :
(int)(40 * 1.50) est défini ?
Et est-ce assuré de retourner toujours 60 ?
Je crois que oui mais indirectement par la contrainte sur le nombre de
chiffres significatifs et donc que 40 * 1.50 n'est pas assure de
valoir (double)(60).
En pratique, je ne connais pas d'implementation des nombres en virgule
flottante qui n'ait pas un resultat exact dans ce cas (en base 2, 10
et 16 qui a ma connaissance sont les seules a etre et meme a avoir ete
employee, le calcul est exact; ok, j'ai bien entendu des rumeurs au
sujet d'un ordinateur russe des annees 50 ou 60 qui fonctionnait en
ternaire, mais je ne sais pas s'il y avait des flottants dessus).
Change le 1.5 par quelque chose qui ne soit pas un entier divise par
une puissance de deux, et ca devient plus amusant.
A+
--
Jean-Marc
FAQ de fclc: http://www.isty-info.uvsq.fr/~rumeau/fclc
Site de usenet-fr: http://www.usenet-fr.news.eu.org
Est-ce que le comportement de : (int)(40 * 1.50) est défini ?
Et est-ce assuré de retourner toujours 60 ?
Je crois que oui mais indirectement par la contrainte sur le nombre de chiffres significatifs et donc que 40 * 1.50 n'est pas assure de valoir (double)(60).
En pratique, je ne connais pas d'implementation des nombres en virgule flottante qui n'ait pas un resultat exact dans ce cas (en base 2, 10 et 16 qui a ma connaissance sont les seules a etre et meme a avoir ete employee, le calcul est exact; ok, j'ai bien entendu des rumeurs au sujet d'un ordinateur russe des annees 50 ou 60 qui fonctionnait en ternaire, mais je ne sais pas s'il y avait des flottants dessus).
Change le 1.5 par quelque chose qui ne soit pas un entier divise par une puissance de deux, et ca devient plus amusant.
A+
-- Jean-Marc FAQ de fclc: http://www.isty-info.uvsq.fr/~rumeau/fclc Site de usenet-fr: http://www.usenet-fr.news.eu.org
Horst Kraemer
On 10 Jul 2003 06:18:41 GMT, Kira wrote:
Salut,
J'ai un gros doute.
Est-ce que le comportement de : (int)(40 * 1.50) est défini ?
Et est-ce assuré de retourner toujours 60 ?
Selon la norme du langage C le comportement est défini mais le résultat n'est pas garanti. Mais tout système réel qui ne retourne pas 60 dans ce cas spécial serait sérieusement buggy.
Attention: Le résultat de (int)(40*1.2) peut être ou bien 48 ou 47.
-- Horst
On 10 Jul 2003 06:18:41 GMT, Kira <none@none.com> wrote:
Salut,
J'ai un gros doute.
Est-ce que le comportement de :
(int)(40 * 1.50) est défini ?
Et est-ce assuré de retourner toujours 60 ?
Selon la norme du langage C le comportement est défini mais le
résultat n'est pas garanti. Mais tout système réel qui ne retourne pas
60 dans ce cas spécial serait sérieusement buggy.
Attention: Le résultat de (int)(40*1.2) peut être ou bien 48 ou 47.
Est-ce que le comportement de : (int)(40 * 1.50) est défini ?
Et est-ce assuré de retourner toujours 60 ?
Selon la norme du langage C le comportement est défini mais le résultat n'est pas garanti. Mais tout système réel qui ne retourne pas 60 dans ce cas spécial serait sérieusement buggy.
Attention: Le résultat de (int)(40*1.2) peut être ou bien 48 ou 47.
-- Horst
Antoine Leca
"Kira" écrivit:
Est-ce que le comportement de : (int)(40 * 1.50) est défini ?
Oui
Et est-ce assuré de retourner toujours 60 ?
Non (en général; peut-être oui si tu ajoutes d'autre contrainte, comme par exemple FLT_RADIX == 16).
Antoine
"Kira" écrivit:
Est-ce que le comportement de : (int)(40 * 1.50) est défini ?
Oui
Et est-ce assuré de retourner toujours 60 ?
Non (en général; peut-être oui si tu ajoutes d'autre contrainte, comme par
exemple FLT_RADIX == 16).