Странные результаты при вычислении больших чисел в python, а затем в python 3 [duplicate]

Вот как это сделать, используя шаблон «stack» и «stack of iterators» (кредиты Gareth Rees):

def search(d, key, default=None):
    """Return a value corresponding to the specified key in the (possibly
    nested) dictionary d. If there is no item with that key, return
    default.
    """
    stack = [iter(d.items())]
    while stack:
        for k, v in stack[-1]:
            if isinstance(v, dict):
                stack.append(iter(v.items()))
                break
            elif k == key:
                return v
        else:
            stack.pop()
    return default

print(search({"B": {"A": 2}}, "A")) будет печатать 2.

0
задан Chichourne 17 January 2019 в 10:33
поделиться

1 ответ

Похоже, вы ищете целочисленное деление, а не число с плавающей точкой.

Оператор / возвращает число с плавающей точкой в ​​Python3. Чтобы выполнить целочисленное деление в Python3, используйте //.

Итак, я думаю, все, что вам нужно, это

(2**83 + 1)//3 

, который дает

3223802185639011132549803

вместо (2**83 + 1)/3.

В Python2.7 оба / и // фактически одинаковы, если вы не сделаете что-то вроде from __future__ import division.

0
ответ дан J...S 17 January 2019 в 10:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: