Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1156 connectés 

  FORUM HardWare.fr
  Programmation
  Algo

  Limite des nombres réels en prog

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Limite des nombres réels en prog

n°2093224
charlebakh​tovsky
Posté le 04-08-2011 à 00:44:12  profilanswer
 

Bonjour,

 

J'ai une liste de nombres ordonnés de maniere coissante. Je voudrais pouvoir générer, à tout moment, un nombre entre deux nombre succéssifs de cette liste.

 

Exemple:

 

J'ai: 1 - 4 - 5 - 6 - 13.7 - 18 ...
Pour simplifier, on va dire que je veux générer un nombre entre 5 et 6, je fais (5+6)/2 = 5.5 et je l'insert à la bonne position (liste triée) en utilisant n'importe quel algo (exemple recherche binaire/dichotomique).
J'aurai: 1 - 4 - 5 - 5.5 - 6 - 13.7 - 18 ...

 

Cependant, en générant des nombres comme ça, on peut arriver à un moment ou on ne peux plus généré de nombre entre deux nombre donnés et on aura un dépassera la capacité à cause de la précision des types (float, double etc selon les langages de programmation).

 

Avez vous une solution/algo pour éviter ce-là ? Serait il par exemple possible de coder ces nombres en chaines de caractères au lieu de nombre réels (e.g. double) ? Toute proposition est la bienvenue.

 

Merci d'avance.


Message édité par charlebakhtovsky le 04-08-2011 à 00:51:22
mood
Publicité
Posté le 04-08-2011 à 00:44:12  profilanswer
 

n°2093225
WiiDS
20 titres en GC, 0 abandon, 0 DQ
Posté le 04-08-2011 à 00:47:42  profilanswer
 

Tu utilises quel langage ?
 
Il existe des libs qui permettent effectivement de contourner ces limites en C/C++


---------------
"I can cry like Roger. It's just a shame I can't play like him" - Andy Murray, 2010
n°2093226
charlebakh​tovsky
Posté le 04-08-2011 à 00:50:28  profilanswer
 

WiiDS a écrit :

Tu utilises quel langage ?
 
Il existe des libs qui permettent effectivement de contourner ces limites en C/C++


 
Ce problème concerne seulement les langages C et C++ ?
Qu'en est il de Java ou Python (c'est les deux autre langages que je peux utiliser).

n°2093229
WiiDS
20 titres en GC, 0 abandon, 0 DQ
Posté le 04-08-2011 à 01:41:31  profilanswer
 

charlebakhtovsky a écrit :


 
Ce problème concerne seulement les langages C et C++ ?
Qu'en est il de Java ou Python (c'est les deux autre langages que je peux utiliser).


Non ce problème concerne que certains langages, en général les plus bas niveau. De mémoire le Java est concerné par cette limitation, Python je sais pas


---------------
"I can cry like Roger. It's just a shame I can't play like him" - Andy Murray, 2010
n°2093230
charlebakh​tovsky
Posté le 04-08-2011 à 01:58:55  profilanswer
 

WiiDS a écrit :


Non ce problème concerne que certains langages, en général les plus bas niveau. De mémoire le Java est concerné par cette limitation, Python je sais pas


ça voudrais dire qu'il y a des langages ou des bibliothèques qui font en sorte que si j'ai deux nombres A et B, le fait de faire ce qui suit, ne donne aucun problème même quand on arrive à un très petit nombre C (proche de A) et qu'on continue ?
 
Boucle infinie:
  C = (A+B)/2
  B = C;
Fin
 

n°2093231
WiiDS
20 titres en GC, 0 abandon, 0 DQ
Posté le 04-08-2011 à 02:15:44  profilanswer
 

[:prozac] J'ai mal compris ton problème, je pensais que tu parlais des limites maximum des nombres, pas de la précision des flottants :D

 

Mais une recherche me montre que la réponse reste la même: En C/C++, il existe une solution pour contourner cette limitation jusqu'à une précision qui devrait théoriquement te satisfaire: http://www.apfloat.org/apfloat/ (je ne sais pas si cette lib est récente ou la meilleure, je sais juste qu'elle existe)

 

Et il doit exister une manière d'implémenter cette solution dans d'autres langages si ceux ci ne le font pas par défaut :jap:


Message édité par WiiDS le 04-08-2011 à 02:15:57

---------------
"I can cry like Roger. It's just a shame I can't play like him" - Andy Murray, 2010
n°2093234
Joel F
Real men use unique_ptr
Posté le 04-08-2011 à 08:08:24  profilanswer
 

Les problemes d eprecisions des reels sont du a la machine, pas au langage.
 
http://floating-point-gui.de/
 
Pour faire du multiprecision, MPRF est en general la solution recommandé mais je doute que tu es besoin d'aller jusque la.

n°2093369
charlebakh​tovsky
Posté le 04-08-2011 à 18:42:24  profilanswer
 

Joel F a écrit :

Les problemes d eprecisions des reels sont du a la machine, pas au langage.
 
http://floating-point-gui.de/
 
Pour faire du multiprecision, MPRF est en general la solution recommandé mais je doute que tu es besoin d'aller jusque la.


Si si, merci. J'ai besoin de pouvoir à tout moment générer un nombre entre deux autre donnés, il me semble donc que la multiprecision avec MPFR est une bonne solution.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Algo

  Limite des nombres réels en prog

 

Sujets relatifs
(résolu)Prog sur PIC 18F452Hein? mon prog a enlevé une lettre de argv[] [NOVICE]
Exécution d'un prog java sous UnixLimite des requête imbriqué dans la clause FROM
Attention aux nombres flottantsLes triggers: tester si les insertions n'ont pas dépassé une limite
[prog réseaux]serveur multithread et variable globalesUn bind( ) dans un prog client en mode TCP
comment inclure/compiler OpenSSL dans mon prog[C++] Date limite d'utilisation d'un logiciel
Plus de sujets relatifs à : Limite des nombres réels en prog


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR