Bonjour à toutes et tous,
J'essaie de remettre au Python après une période de rupture de 3 ans ; j'utilisais Python lors de mon BTS SIO SLAM pour les algos de base.
Dans mon taf, j'utilise Java ; mais j'ai entendu dire que Python pourrait simplifier mon code via Jython.
En conséquence, je réapprends Python de A à Z, surtout ce qui a changé depuis 3 ans.
J'en suis à list comprehension. Pour ce faire j'ai codé ainsi :
J'obtiens :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 list=[x*10**y for x in range(1,10) for y in range(-1,-11,-1)] print(list)
Que ce soit la notation décimale ou scientifique m'importe peu, ce que je trouve bizarre est ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part [0.1, 0.01, 0.001, 0.0001, 1e-05, 1e-06, 1e-07, 1e-08, 1e-09, 1e-10, 0.2, 0.02, 0.002, 0.0002, 2e-05, 2e-06, 2e-07, 2e-08, 2e-09, 2e-10, 0.30000000000000004, 0.03, 0.003, 0.00030000000000000003, 3.0000000000000004e-05, 3e-06, 3e-07, 3.0000000000000004e-08, 3.0000000000000004e-09, 3e-10, 0.4, 0.04, 0.004, 0.0004, 4e-05, 4e-06, 4e-07, 4e-08, 4e-09, 4e-10, 0.5, 0.05, 0.005, 0.0005, 5e-05, 4.9999999999999996e-06, 5e-07, 5e-08, 5e-09, 5e-10, 0.6000000000000001, 0.06, 0.006, 0.0006000000000000001, 6.000000000000001e-05, 6e-06, 6e-07, 6.000000000000001e-08, 6.000000000000001e-09, 6e-10, 0.7000000000000001, 0.07, 0.007, 0.0007, 7.000000000000001e-05, 7e-06, 7e-07, 7e-08, 7.000000000000001e-09, 7.000000000000001e-10, 0.8, 0.08, 0.008, 0.0008, 8e-05, 8e-06, 8e-07, 8e-08, 8e-09, 8e-10, 0.9, 0.09, 0.009000000000000001, 0.0009000000000000001, 9e-05, 9e-06, 9e-07, 9e-08, 9.000000000000001e-09, 9e-10]
Pour 1 et 2, les résultats sont bons. A partir de 3 :
Ex : 0.30000000000000004 (d'où vient le 4) ; 0.00030000000000000003 (là j'ai un 3)
idem avec la notation scientifique : 3.0000000000000004e-08
Le must étant : 4.9999999999999996e-06 au lieu et place de 5e-06
Est-ce un problème de mon code et j'ai rien percuté à list comprehension ou un problème du build Python ou autre ?
Merci d'avance.
Partager