2012-05-26 16 views

Respuesta

63

En Python 2, 25/100 es cero cuando se realiza una división de enteros. ya que el resultado es menor que 1.

Puedes "corregir" esto agregando from __future__ import division a tu script. Esto siempre realizará una división flotante cuando se usa el operador / y usa // para la división entera.

Otra opción sería hacer que al menos uno de los operandos sea flotante, p. 25.0/100.

En Python 3, 25/100 es siempre 0.25.

1

25/100 es un cálculo entero que redondea (por truncamiento) a 0.

+2

Ligero, no es tanto redondear como truncar. – Levon

+0

@Levon Esa es una forma de redondeo, pero sí. – Marcin

10

Este es un problema del número entero truncamiento (es decir, cualquier parte fraccional de un número se descarta). Por lo tanto:

25/100 da 0

Sin embargo, siempre que al menos uno de los operandos en la división es un flotador, que obtendrá un resultado float:

25/100.0 o 25.0/100 o 25.0/100.0 todos dan 0.25

+0

¿Cómo se haría esto en caso de que los números se almacenan en una variable? Por ejemplo, x/y, donde x = 4 e y = 3. O x = someObject.size. – altabq

+4

Una forma de hacerlo es tp multiplicar uno de los números por 1.0. Por ejemplo, '1.0 * x/2' o podría hacer' float (x)/2' - podría haber otras formas, pero estas vienen a la mente de la parte superior de mi cabeza. Siempre puede verificar interactivamente sus resultados antes de codificarlos en un programa. Espero que ayude. – Levon

+0

Sí, sí, gracias por la respuesta! – altabq

Cuestiones relacionadas