2012-05-31 19 views
1

我讨厌承认它,但这小小的代码行给我一些麻烦。Python代数分数

print 15 + (-1*(((yearnum + yearnum/4 - yearnum/100 + yearnum/400) + 11) % 7)) % 7 

为什么这不等于?

print 15 + (-1*(((497 * yearnum/400) + 11) % 7)) % 7 

也许我已经完全忘记了分数是如何工作的?

+2

您是否可以添加如何进行错误简化的步骤?这可能是操作顺序,或者是错误计算的分数。看到这些步骤,从一开始就比简化更容易发现(阅读:我很懒:p)。 – Corbin

+0

Python 2.x或3? – BobS

+0

'yearnum(1 + 1/4-1/100 + 1/400)'被正确地简化为'yearnum(497/400)',其中数学有关 - 我认为 – epsilonhalbe

回答

3

(yearnum + yearnum/4 - yearnum/100 + yearnum/400)不等于(497 * yearnum/400) + 11) % 7)由于整数除法(Python楼层的整数除法的结果)。

+0

谈论忘记基础知识。你100%正确。感谢您指出了这一点。随着这一点,我呼吁它退出一天。 –

+0

你可以通过在每个数字后加小数点来避免这个问题,从而迫使python使用浮点数而不是整数。 1/4 = 0,但是1./4.=0.25 – abought