PHWinfo banniere

Titres
PORTAIL ANNUAIRE ARTICLES COMPARATEUR HÉBERGEURS DEVIS FORUMS RÉDUCTEUR D'URL
Précédent   PHWinfo > Autres forums > Forum Programmation & Conception > fr.comp.lang.c++ > Re: double et eniers 64 bits non signés
S'inscrire FAQ Membres Recherche Messages du jour Marquer les forums comme lus
Re: double et eniers 64 bits non signés

Réponse
 
LinkBack Outils de la discussion
Vieux 19/02/2008, 21h06   #1
James Kanze
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: double et eniers 64 bits non signés

On Feb 19, 6:18 pm, JBB <nos...@nospam.com> wrote:
> voici un code compilé VisualStudio2005, windows XP


> double f = 1e100;
> unsigned __int64 y = f;


> dans y je trouve : 0x8000000000000000
> alors que je m'attendais plutot à 0xFFFFFFFFFFFFFFFF


> c'est normal? c'est un bug?


Le code a un comportement indéfini. C-à-d que n'importe ce que
fait le compilateur est correct. (À vrai dire, je me serais
attendu à un SIGFPE, ou quelque chose du genre.)

--
James Kanze (GABI Software) email:james.kanze@gmail.com
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
  Réponse avec citation
Vieux 20/02/2008, 09h46   #2
JBB
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: double et entiers 64 bits non signés

James Kanze a écrit :
> On Feb 19, 6:18 pm, JBB <nos...@nospam.com> wrote:
>> voici un code compilé VisualStudio2005, windows XP

>
>> double f = 1e100;
>> unsigned __int64 y = f;

>
>> dans y je trouve : 0x8000000000000000
>> alors que je m'attendais plutot à 0xFFFFFFFFFFFFFFFF

>
>> c'est normal? c'est un bug?

>
> Le code a un comportement indéfini. C-à-d que n'importe ce que
> fait le compilateur est correct. (À vrai dire, je me serais
> attendu à un SIGFPE, ou quelque chose du genre.)
>
> --
> James Kanze (GABI Software) email:james.kanze@gmail.com
> Conseils en informatique orientée objet/
> Beratung in objektorientierter Datenverarbeitung
> 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34


en fait je cherchait un type flottant qui englobe le type unsigned __int64 tout en gardant la précision au niveau de l'entier.
je me doute bien que ça marche pas avec 'double' qui n'est que sur 8 octets ( tout comme __int64).
Il n'y a pas des flottants avec plus de précisions?
j'ai l'impression que 'long double' n'est pas différent de double ( sizeof(long double) = 8)
  Réponse avec citation
Vieux 20/02/2008, 10h10   #3
Michael DOUBEZ
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: double et entiers 64 bits non signés

JBB a écrit :
> James Kanze a écrit :
>> On Feb 19, 6:18 pm, JBB <nos...@nospam.com> wrote:
>>> voici un code compilé VisualStudio2005, windows XP

>>
>>> double f = 1e100;
>>> unsigned __int64 y = f;

>>
>>> dans y je trouve : 0x8000000000000000
>>> alors que je m'attendais plutot à 0xFFFFFFFFFFFFFFFF

>>
>>> c'est normal? c'est un bug?

>>
>> Le code a un comportement indéfini. C-à-d que n'importe ce que
>> fait le compilateur est correct. (À vrai dire, je me serais
>> attendu à un SIGFPE, ou quelque chose du genre.)
>>
>> --
>> James Kanze (GABI Software) email:james.kanze@gmail.com
>> Conseils en informatique orientée objet/
>> Beratung in objektorientierter Datenverarbeitung
>> 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34

>
> en fait je cherchait un type flottant qui englobe le type unsigned
> __int64 tout en gardant la précision au niveau de l'entier.
> je me doute bien que ça marche pas avec 'double' qui n'est que sur 8
> octets ( tout comme __int64).
> Il n'y a pas des flottants avec plus de précisions?
> j'ai l'impression que 'long double' n'est pas différent de double (
> sizeof(long double) = 8)


Si tu veux vraiment cette précision, je pense que tu devrais passer à
une lib de nombre mutliprecision. Les plus connues étant:
- GMP : GNU Multiple Precision Arithmetic Library
http://gmplib.org/
- MIRACL : Multiprecision Integer and Rational Arithmetic C/C++ Library
http://www.shamus.ie/

Michael
  Réponse avec citation
Vieux 20/02/2008, 10h30   #4
Marc Boyer
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: double et entiers 64 bits non signés

On 2008-02-20, JBB <nospam@nospam.com> wrote:
> James Kanze a écrit :
>> On Feb 19, 6:18 pm, JBB <nos...@nospam.com> wrote:
>>> voici un code compilé VisualStudio2005, windows XP

>>
>>> double f = 1e100;
>>> unsigned __int64 y = f;

>>
>>> dans y je trouve : 0x8000000000000000
>>> alors que je m'attendais plutot à 0xFFFFFFFFFFFFFFFF

>>
>>> c'est normal? c'est un bug?

>>
>> Le code a un comportement indéfini. C-à-d que n'importe ce que
>> fait le compilateur est correct. (À vrai dire, je me serais
>> attendu à un SIGFPE, ou quelque chose du genre.)

>
> en fait je cherchait un type flottant qui englobe le type unsigned __int64 tout en gardant la précision au niveau de l'entier.
> je me doute bien que ça marche pas avec 'double' qui n'est que sur 8 octets ( tout comme __int64).


Donc un flottant avec une mantisse sur plus de 64bits.
AMHA, sur des processeurs 64 bits, il va falloir passer à
une émulation logicielle.

Marc Boyer
--
Si tu peux supporter d'entendre tes paroles
Travesties par des gueux pour exciter des sots
IF -- Rudyard Kipling (Trad. André Maurois)
  Réponse avec citation
Vieux 20/02/2008, 11h20   #5
Sylvain Togni
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: double et entiers 64 bits non signés

JBB a écrit :

> j'ai l'impression que 'long double' n'est pas différent de double (
> sizeof(long double) = 8)


La taille de long double dépend du compilateur. Les tailles les
plus courantes sont :
- 64 bits (mantisse 52 bits)
- 80 bits (mantisse 64 bits)
- 128 bits (mantisse 112 bits)

--
Sylvain Togni
  Réponse avec citation
Vieux 20/02/2008, 11h53   #6
Fabien LE LEZ
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: double et entiers 64 bits non signés

On Wed, 20 Feb 2008 10:46:09 +0100, JBB <nospam@nospam.com>:

>en fait je cherchait un type flottant qui englobe le type
>unsigned __int64 tout en gardant la précision au niveau de l'entier.


T'es sûr de vouloir un flottant ? Ces machins-là sont passablement
imprévisibles, dans le meilleur des cas.
Un type entier très long (333 bits minimum) ne serait-il pas plus
adapté ?

  Réponse avec citation
Réponse


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +1. Il est actuellement 21h00.


Édité par : vBulletin® version 3.7.2
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0 RC5 Tous droits réservés.
Version française #16 par l'association vBulletin francophone
PHWinfo est un site Éducation Sans Frontières
Ad Management by RedTyger
©Tous droits réservés par les parties respectives
Page generated in 0,11544 seconds with 14 queries