instructions manquantes en python ?
9 posts
• Page 1 of 1
instructions manquantes en python ?
Bonjour,
Je n'arrive pas à extraire la partie décimale d'un nombre.
Par exemple 125.36.
int(125.36) donne 125, int doit vouloir dire integer part et fonctionne comme floor, ou IP.
Mais je ne vois l'instruction FRAC ou FP (fractional part). Si cette instruction n'existe pas comment extraire la partie décimale ?
Je n'arrive pas à extraire la partie décimale d'un nombre.
Par exemple 125.36.
int(125.36) donne 125, int doit vouloir dire integer part et fonctionne comme floor, ou IP.
Mais je ne vois l'instruction FRAC ou FP (fractional part). Si cette instruction n'existe pas comment extraire la partie décimale ?
-
ggauny@live.frPremium
Niveau 9: IC (Compteur Infatigable)- Posts: 296
- Joined: 11 Mar 2015, 20:43
- Gender:
- Calculator(s):→ MyCalcs profile
Re: instructions manquentes en python ?
Bonjour.
Tu as déjà trouvé tout ce qu'il faut pour la calculer.
Voici une fonction en ce sens :
Tu as déjà trouvé tout ce qu'il faut pour la calculer.
Voici une fonction en ce sens :
- Code: Select all
def fp(i): return i-int(i)
-
critorAdmin
Niveau 19: CU (Créateur Universel)- Posts: 42232
- Images: 16682
- Joined: 25 Oct 2008, 00:00
- Location: Montpellier
- Gender:
- Calculator(s):→ MyCalcs profile
- YouTube: critor3000
- Twitter: critor2000
- GitHub: critor
Re: instructions manquentes en python ?
Par exemple dans les calculs calendaires, on recours souvent à FP qui tombe juste, mais là : i_int(i) pour 125.36 retourne :
0.3599999999999994. Alors j'utilise round(x,digits) mais j'obtiens toujours .3599999999994.
Les arrondis me posent problèmes sur Ti.
EDIT : Si je connais le nombre de décimales désiré, je fais par exemple :
exemple : fp(125.36) ===> 0.36 (youpi !)
------------ fp(2.1935) ===> 0.1935 (ici je mets n+1 = 5)
Ajouter 1 à n n'est peut-être pas nécessaire.
0.3599999999999994. Alors j'utilise round(x,digits) mais j'obtiens toujours .3599999999994.
Les arrondis me posent problèmes sur Ti.
EDIT : Si je connais le nombre de décimales désiré, je fais par exemple :
- Code: Select all
def fp(i):
s=(i-int(i))
s=round(s,3) # je désire n décimales, j'indique : n+1, ici 3 pour être sûr. C'est bon aussi avec n=2.
print(s)
exemple : fp(125.36) ===> 0.36 (youpi !)
------------ fp(2.1935) ===> 0.1935 (ici je mets n+1 = 5)
Ajouter 1 à n n'est peut-être pas nécessaire.
-
ggauny@live.frPremium
Niveau 9: IC (Compteur Infatigable)- Posts: 296
- Joined: 11 Mar 2015, 20:43
- Gender:
- Calculator(s):→ MyCalcs profile
Re: instructions manquentes en python ?
Ce n'est pas la faute de TI ici ; nous sommes en Micropython et donc les nombres non entiers sont représentés en virgule flottante double précision (64 bits).
La NumWorks et la Casio Graph 90/35+E II font très exactement les mêmes erreurs de calcul que la TI-Nspire CX II :


La NumWorks et la Casio Graph 90/35+E II font très exactement les mêmes erreurs de calcul que la TI-Nspire CX II :


-
critorAdmin
Niveau 19: CU (Créateur Universel)- Posts: 42232
- Images: 16682
- Joined: 25 Oct 2008, 00:00
- Location: Montpellier
- Gender:
- Calculator(s):→ MyCalcs profile
- YouTube: critor3000
- Twitter: critor2000
- GitHub: critor
Re: instructions manquantes en python ?
Il y a toujours ce genre d'erreurs avec les flottants : on ne peut pas y échapper.
On peut les contourner :
Dans ton cas, les entiers seraient sans doute plus adaptés, mais cela obligerait à récrire tous tes algorithmes.
PS : La fonction
Autrement dit,
On peut les contourner :
- soit en codant uniquement avec des entiers à la place des flottants,
- soit en acceptant une petite erreur sur les calculs avec les flottants.
Dans ton cas, les entiers seraient sans doute plus adaptés, mais cela obligerait à récrire tous tes algorithmes.
PS : La fonction
int
ne donne ni un arrondi, ni la partie entière, lorsqu'elle est appliquée à un flottant, mais la troncature vers 0.Autrement dit,
int(12.8)
renvoie 12 et int(-17.7)
renvoie -17.-
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)- Posts: 5670
- Joined: 11 Mar 2008, 00:00
- Location: Lyon
- Gender:
- Calculator(s):→ MyCalcs profile
Re: instructions manquantes en python ?
Merci pour vos avis et nullement je n'ai dit que c'était la faute de Ti. Bien sûr je découvre le python et cela m'oblige à raisonner
autrement qu'en PPL, tant mieux. Il y a toujours des solutions quand un seul arbre ne cache pas la forêt. A l'école le maître nous disait
raisonnez rai pas ré !
Pour int j'ignorais ce que me dit Bisam, en effet important.
autrement qu'en PPL, tant mieux. Il y a toujours des solutions quand un seul arbre ne cache pas la forêt. A l'école le maître nous disait
raisonnez rai pas ré !
Pour int j'ignorais ce que me dit Bisam, en effet important.
-
ggauny@live.frPremium
Niveau 9: IC (Compteur Infatigable)- Posts: 296
- Joined: 11 Mar 2015, 20:43
- Gender:
- Calculator(s):→ MyCalcs profile
Re: instructions manquantes en python ?
ggauny@live.fr wrote:Merci pour vos avis et nullement je n'ai dit que c'était la faute de Ti.
Alors toutes mes excuses si j'ai mal compris.
Mais c'était une simple précision, il n'y avait aucune connotation négative envers quiconque.

-
critorAdmin
Niveau 19: CU (Créateur Universel)- Posts: 42232
- Images: 16682
- Joined: 25 Oct 2008, 00:00
- Location: Montpellier
- Gender:
- Calculator(s):→ MyCalcs profile
- YouTube: critor3000
- Twitter: critor2000
- GitHub: critor
Re: instructions manquantes en python ?
Je pense surtout m'être mal exprimé. Mais vos conseils en programmation sont très importants et en voici une preuve.
Pour décomposer une date entrée en format JJ,MMAAAA en JJ, MM, AAAA et puisque int est une troncature qui a le même effet que IP sur les Primes,
voilà ma dernière routine de départ :
Et j'obtiens exactement ce qu'il me faut :
def(23.021935)
==> 23
==> 2
==> 1935
Bonne soirée à tous. Je peaufinerai demain, je ne peux plus me concentrer aussi longtemps
que quand j'étais plus jeune !
Pour décomposer une date entrée en format JJ,MMAAAA en JJ, MM, AAAA et puisque int est une troncature qui a le même effet que IP sur les Primes,
voilà ma dernière routine de départ :
- Code: Select all
def da(date):
j=int(date)
print(j)
m=int((date-j)*100)
print(m)
a=((date*100)-int(date*100))*10000
a=int(round(a,4))
print(a)
Et j'obtiens exactement ce qu'il me faut :
def(23.021935)
==> 23
==> 2
==> 1935
Bonne soirée à tous. Je peaufinerai demain, je ne peux plus me concentrer aussi longtemps
que quand j'étais plus jeune !
-
ggauny@live.frPremium
Niveau 9: IC (Compteur Infatigable)- Posts: 296
- Joined: 11 Mar 2015, 20:43
- Gender:
- Calculator(s):→ MyCalcs profile
Re: instructions manquantes en python ?
Il y a une autre solution:
Et plus besoin de calcul...
À signaler qu'en pur python il n'y a pas de fonction pour retourner la partie fractionnaire d'un flottant, donc:
parce que
En python standard, le module
Pour plus d'information à ce sujet voir page 2 du "Python dans l'environnement TI-Nspire : Guide de programmation".
- Code: Select all
def da(jour, mois, annee):
Et plus besoin de calcul...
À signaler qu'en pur python il n'y a pas de fonction pour retourner la partie fractionnaire d'un flottant, donc:
- Code: Select all
fpart(x) = x - int(x)
parce que
- Code: Select all
int
Il y a toujours ce genre d'erreurs avec les flottants : on ne peut pas y échapper.
En python standard, le module
- Code: Select all
decimal
Pour plus d'information à ce sujet voir page 2 du "Python dans l'environnement TI-Nspire : Guide de programmation".
-
rentech7289
Niveau 7: EP (Espèce Protégée: geek)- Posts: 107
- Joined: 16 Aug 2021, 02:40
- Location: Lorraine luxembourgeoise
- Gender:
- Calculator(s):→ MyCalcs profile
9 posts
• Page 1 of 1
Return to Problèmes divers / Aide débutants
Who is online
Users browsing this forum: ClaudeBot [spider] and 12 guests