首页 文章

python整数除法错误 - 以零为模 - BUT除数!= 0

提问于
浏览
2

我是使用python进行简单数学运算的新手,很抱歉,如果这是一个愚蠢的问题 .

我有8个变量都设置为整数,这些整数在执行简单计算时使用 .

a = 0
b = 17
c = 152
d = 1
e = 133
f = 19
g = 20
h = 0

answer = ( ( ( a / f ) + b + c ) - ( g + ( h / f ) ) ) / ( d / f )

print answer

当我运行此代码时,我得到错误,ZeroDivisionError:整数除法或模数为零 .

我已经读过关于这个错误的所有文档指向我的除数为零,但是如果我用数字作为字符串来代替变量打印,我得到:

( ( ( 0 / 19 ) + 17 + 152 ) - ( 20 + ( 0 / 19 ) ) ) / ( 1 / 19 )

在这个陈述中没有任何地方是除数零 .

请告诉我如何更改表达式以获得答案2831.请注意,我可以将变量的类型更改为浮点数或其他 . 谢谢您的帮助!

2 回答

  • 1

    可能你正在使用 Python 2.x ,其中 x / yinteger division .

    那么,在下面的代码中: -

    ( 20 + ( 0 / 19 ) ) ) / ( 1 / 19 )
    

    1 / 19integer division ,结果是 0 . 所以表达式基本相同: -

    ( 20 + ( 0 / 19 ) ) ) / 0
    

    现在,您可以看到错误的来源 .


    您可以在 python 代码中添加以下导入,以强制执行浮点除法: -

    from __future__ import division
    

    或者您可以使用 float() 或仅将 .0 添加到初始值,将其中一个整数转换为浮点数 .

  • 11
    from __future__ import division
    

    而不是你的计算

    它会导致分裂返回浮动

相关问题