Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 1, 2012 13:02:19

QAS
От:
Зарегистрирован: 2010-01-28
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

:) Непонятка при делении простых чисел

При делении больших чисел на 10, с последующим приведением к целому возникает вот такой вот глюк:

>>> a=555555555555555555555555555555555555555555555555555555555555555
>>> int(a/10)
55555555555555558769886663484831657077409927176391135454035968

>>> a=99999999999999999999
>>> int(a/10)
10000000000000000000
Заранее благодарен за обьяснение



Офлайн

#2 Апрель 1, 2012 13:57:35

Singularity
Зарегистрирован: 2011-07-28
Сообщения: 1387
Репутация: +  75  -
Профиль   Отправить e-mail  

:) Непонятка при делении простых чисел

“простых чисел”
а где простые числа ?
примеры у меня работают правильно

Офлайн

#3 Апрель 1, 2012 14:31:38

sp3
От:
Зарегистрирован: 2010-01-12
Сообщения: 405
Репутация: +  18  -
Профиль   Отправить e-mail  

:) Непонятка при делении простых чисел

>>> 10/3
0: 3
>>> 10.0/3
1: 3.3333333333333335
от типа зависит int, float



Офлайн

#4 Апрель 1, 2012 22:39:55

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

:) Непонятка при делении простых чисел

sp3
речь вовсе не об этом

QAS
у меня как и у Singularity приведенный вами пример работает. Поэтому будьте так любезны, предоставьте базовую информацию для любого поста на этом форуме, а именно ти и версию ОС и Питона



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#5 Апрель 2, 2012 01:13:11

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

:) Непонятка при делении простых чисел

JOHN_16, просто у товарища QAS стоит Python3. sp3 правильно указал на причину непонятки. Догадались, в чем было дело?



Офлайн

#6 Апрель 2, 2012 01:41:12

QAS
От:
Зарегистрирован: 2010-01-28
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

:) Непонятка при делении простых чисел

Версия ОС-WinXP SP3
Python 3.2

При повторных попытках тоже получается следующее:
>>> a=55555555555555555555555555555555555555555555/10
>>> a
5.5555555555555556e+42
>>> int(a)
5555555555555555632984509421896721739284480
>>>
Складывается впечатление, что при переводе из int во float после деления интерпретатор просто округляет получившееся число на определенном разряде, хотя разрядность числа для float вполне допустимая.
Изначальная задачка заключалась в записи цифр целого числа в список. С числами поменьше все получается правильно, а вот с порядками типа 10**42 уже вылазят проблемы.

PS: насчет ‘простых’ чисел я действительно погарячился



Офлайн

#7 Апрель 2, 2012 04:29:12

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

:) Непонятка при делении простых чисел

На минуточку, разрядность мантиссы у float — примерно 16 десятичных знаков.



Офлайн

#8 Апрель 2, 2012 07:24:03

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

:) Непонятка при делении простых чисел

Андрей Светлов
В отличиях поведения деления по умолчанию? (имеется ввиду a/b )
P.S. в python3 не силен ибо пока что не использую



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#9 Апрель 2, 2012 12:39:41

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

:) Непонятка при делении простых чисел

ну да, 5555/10 в тройке даст float, для целочисленного деления следует применять 5555//10



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version