2010-08-05 4 views

ответ

2

Если sum_total является целым числом (что равно sum_total .__ class__ равно?), python, похоже, использует целочисленное деление.

Попробуйте использовать i/float (sum_total).

+0

Когда я хочу разделить поплавок, это всегда x/float (y); но поскольку ints и floats не являются объектами, у них нет класса, но они имеют тип, который может быть протестирован с помощью say type (x) –

+0

@Dan, ints - это тип 'int', floats - тип' float' - типы - это классы. и ints и floats являются объектами! –

+0

Или попробуйте 'из __future__ import division', чтобы получить точные результаты от'/' –

2

Возможно, это связано с разделением поплавков.

я, вероятно, меньше, чем sum_total, которые в целочисленном делении возвращает 0.

100 * 0 = 0.

Попробуйте приведения его к поплавку.

3

попробовать эту list comprehension вместо

big_set = [100*i/sum_total for i in results_histogram_total] 

к сведению, что / обрежет в python2, так что вы можете использовать

big_set = [100.0*i/sum_total for i in results_histogram_total] 
5

В Python 2.x, используйте from __future__ import division, чтобы получить вменяемое поведение деления.

Смежные вопросы