Python Imprécision des Float

AVR380 Membre non connecté
-
- Voir le profil du membre AVR380
- Inscrit le : 12/11/2013
- Groupes :
Je suise entrain de découvrir python. Mes premières interactions avec ce langage sont assez agréables mais j'ai découvert l’imprécision des float.
Si on exécute cette opération, le résultat n'est pas exacte:
Code PYTHON :
>>> 3.11 + 2.08 5.1899999999999995
C'est très problématique pour moi qui n'ai jamais eu ce problème en codant sous Matlab ou en Fortran.
L'application pour moi serait de concevoir des ailes d'avions et des hélices. Des calculs précis et fiables sont donc très importants.
Vous avez une idée de comment résoudre ce problème?
L'idée pour moi à terme c'est de remplacer Matlab par Python.

marc-andré Membre non connecté
-
- Voir le profil du membre marc-andré
- Inscrit le : 29/09/2015
- Groupes :
je débute aussi en python;
j'ai regardé quelques vidéos concernant cython, qui est un sur-ensemble de python;
il s'agit surtout de fournir des déclarations de types comme en C, pour avoir les mêmes types;
et du coup, ça booste vraiment le code;
j'imagine que c'est pareil pour la précision, si tu utilises le cython avec la déclaration complète des variables, tu auras la précision du C
une vidéo bien faite :
https://www.youtube.com/watch?v=JKMkhARcwdU
HP ProDesk ;
Mageia8 Gnome
Liberté et sécurité sont les arguments classiques pour LINUX. En prime il y a aussi la dignité et la confiance ressentie depuis que je suis sous Mageia
Mageia8 Gnome
Liberté et sécurité sont les arguments classiques pour LINUX. En prime il y a aussi la dignité et la confiance ressentie depuis que je suis sous Mageia

funix Membre non connecté
-
- Voir le profil du membre funix
- Inscrit le : 17/12/2012
- Site internet
- Groupes :

Jybz Membre non connecté
-
- Voir le profil du membre Jybz
- Inscrit le : 10/10/2018
- Groupes :
-
Administrateur
-
Forgeron
funix :
laisse tomber python, utilise scilab
Scilab peut s'intégrer dans un projet Python ?
Téléverser une image : /wiki/hebergement-de-fichiers-sur-mlo
Arch | Machine | OS |
x86_64 | lenovo x250 | mga9 |
armv7hl | bananapro | mga9 |
aarch64 | Raspberry Pi 4B | mga9 |

funix Membre non connecté
-
- Voir le profil du membre funix
- Inscrit le : 17/12/2012
- Site internet
- Groupes :

AVR380 Membre non connecté
-
- Voir le profil du membre AVR380
- Inscrit le : 12/11/2013
- Groupes :
funix :
laisse tomber python, utilise scilab
Je préfère Octave mais l'idée la c'est que si j'utilise Python pour les calculs, je pourrai facilement faire un logiciel avec mes scripts. Alors que Matlab ne peut pas être intégrée dans un app ou un site web. Ou en tout cas pas facilement.
Et ça me permet d'apprendre un code qui permet de presque tout faire dans le même temps.

AVR380 Membre non connecté
-
- Voir le profil du membre AVR380
- Inscrit le : 12/11/2013
- Groupes :
marc-andré :
salut
je débute aussi en python;
j'ai regardé quelques vidéos concernant cython, qui est un sur-ensemble de python;
il s'agit surtout de fournir des déclarations de types comme en C, pour avoir les mêmes types;
et du coup, ça booste vraiment le code;
j'imagine que c'est pareil pour la précision, si tu utilises le cython avec la déclaration complète des variables, tu auras la précision du C
une vidéo bien faite :
https://www.youtube.com/watch?v=JKMkhARcwdU
je débute aussi en python;
j'ai regardé quelques vidéos concernant cython, qui est un sur-ensemble de python;
il s'agit surtout de fournir des déclarations de types comme en C, pour avoir les mêmes types;
et du coup, ça booste vraiment le code;
j'imagine que c'est pareil pour la précision, si tu utilises le cython avec la déclaration complète des variables, tu auras la précision du C
une vidéo bien faite :
https://www.youtube.com/watch?v=JKMkhARcwdU
Ce n'est un pas un code performant que je vise, pour ça il y a Fortran. L'idée est d'avoir un code facile à utliser comme matlab mais un minimum précis.

AVR380 Membre non connecté
-
- Voir le profil du membre AVR380
- Inscrit le : 12/11/2013
- Groupes :
Mais sous Octave le résultat sans erreur.
Comment ils font pour régler ce problème?
Est ce qu'ils le règlent vraiment ou affichent-ils juste un arrondi?

Jybz Membre non connecté
-
- Voir le profil du membre Jybz
- Inscrit le : 10/10/2018
- Groupes :
-
Administrateur
-
Forgeron
$ echo "3.11 + 2.08" | bc
Téléverser une image : /wiki/hebergement-de-fichiers-sur-mlo
Arch | Machine | OS |
x86_64 | lenovo x250 | mga9 |
armv7hl | bananapro | mga9 |
aarch64 | Raspberry Pi 4B | mga9 |

AVR380 Membre non connecté
-
- Voir le profil du membre AVR380
- Inscrit le : 12/11/2013
- Groupes :
Jybz :
Sinon, simple, script,
$ echo "3.11 + 2.08" | bc
$ echo "3.11 + 2.08" | bc
Ça ne marche pas dans mon interpréteur. Ça ressemble à du PHP ça.
Si j'applique un
round(x,15)
Le résultat deviens bon. peut être que c'est ce que fait matlab.

Jybz Membre non connecté
-
- Voir le profil du membre Jybz
- Inscrit le : 10/10/2018
- Groupes :
-
Administrateur
-
Forgeron
Téléverser une image : /wiki/hebergement-de-fichiers-sur-mlo
Arch | Machine | OS |
x86_64 | lenovo x250 | mga9 |
armv7hl | bananapro | mga9 |
aarch64 | Raspberry Pi 4B | mga9 |

AVR380 Membre non connecté
-
- Voir le profil du membre AVR380
- Inscrit le : 12/11/2013
- Groupes :
Jybz :
Hahaha, non ce n'est pas du PHP, c'est... du shell.
Dans le terminal ça marche bien. T'est entrain de me dire que le terminal est un langage de programmation?

Jybz Membre non connecté
-
- Voir le profil du membre Jybz
- Inscrit le : 10/10/2018
- Groupes :
-
Administrateur
-
Forgeron
Par exemple, en shell, je fais quelques choses :
https://framagit.org/Jybz/leetchidl/blob/master/leetchi.sh
cet exemple, ça télécharges divers trucs de leetchi, par exemple, la liste des contributeurs, même quand le site ne les affichent pas, même quand le site a une protection anti DDOS de cloudflare.
Téléverser une image : /wiki/hebergement-de-fichiers-sur-mlo
Arch | Machine | OS |
x86_64 | lenovo x250 | mga9 |
armv7hl | bananapro | mga9 |
aarch64 | Raspberry Pi 4B | mga9 |

funix Membre non connecté
-
- Voir le profil du membre funix
- Inscrit le : 17/12/2012
- Site internet
- Groupes :
AVR380 :
[
Ce n'est un pas un code performant que je vise, pour ça il y a Fortran. L'idée est d'avoir un code facile à utliser comme matlab mais un minimum précis.
Ce n'est un pas un code performant que je vise, pour ça il y a Fortran. L'idée est d'avoir un code facile à utliser comme matlab mais un minimum précis.
Il faut savoir ce que tu veux, dans ton premier message tu dis que tu veux quelque chose de performant et maintenant ce n'est plus important, on a du mal à suivre, sinon cf plus haut, tu as des routines python pour pouvoir intégrer du code scilab qui est relativement similaire à celui de matlab (voir la doc scilab qui est très bien faite à ce sujet).

Yuusha Membre non connecté
-
- Voir le profil du membre Yuusha
- Inscrit le : 04/07/2017
- Groupes :
-
Modérateur
-
Administrateur
-
Forgeron
Première chose, continue avec le Python, c'est ce qui est en train de devenir le standard pour des codes de calculs simples ou les scripts de couplage de code. Et franchement : Python + numpy/scipy + matplotlib est bien mieux que tout ce que Scilab, Octave ou quoique soit d'autre. De plus le Python est beaucoup plus généraliste et l'apprendre pourra te permettre de faire plein de choses différentes.
Concernant l'imprécision de Python, la réponse est ici. En réalité tous les langages (ou en tout cas la plupart) sont imprécis en raison de la manière de stocker les réels en mémoire. Sauf qu'en Python, tu peux le remarquer quand tu réalises des opérations simples comme celles-ci. Mais ne t'inquiète pas, tu auras la même précision qu'avec un double en Fortran ou en C. Et le Python est déjà utilisé en aéronautique.
https://jobtensor.com/Python-Introduction
Édité par david.david Le 30/04/2021 à 11h33
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie