2013-06-19 2 views
1

Voici la question:Python: Math.ceil mal à

>>> 16/float(1184000) 

retours:

1.3513513513513513e-05 

si je tente d'exécuter Math.ceil sur ce nombre, je reçois "1" au lieu de " 2"

>>>math.ceil(16/float(1184000)) 

retours:

1.0 

Cela semble étrange, des idées sur la façon de résoudre ce problème?

+1

Je m'excuse si vous le savez déjà, mais votre premier résultat est exprimé en [** notation scientifique **] (http://en.wikipedia.org/wiki/Scientific_notation). 1.351e-05 peut également être écrit comme 0.00001351. Et 'ceil (0.00001351)' est, en fait, '1'. – jedwards

Répondre

2

On dirait que vous avez manqué le pouvoir: -05:

Le nombre est en fait:

>>> '{:.20f}'.format(16/float(1184000)) 
'0.00001351351351351351' 

Donc, la réponse est correcte.

+0

Merci beaucoup pour l'explication, je l'ai regardé comme 1.351351351 .... – downbySF

+0

@downbySF content que cela a aidé. –

2

Le nombre 1 est le plus petit entier supérieur à 16/1184000. C'est ce que fait le math.ceil().

1.3513513513513513e-05 est compris entre 0 et 1, donc vos deux réponses sont cohérentes.

Le chiffre ci-dessus est lu comme "1,3513513513513513 fois 10 à la puissance négative de 5ème".

+1

Merci John, a cru que pour 1.3 pas 0.0000135 .. :) – downbySF