有没有更好的方法来编写这个加法函数?

时间:2011-02-20 01:54:03

标签: python sum add addition

可以用我未见过的方式在Python中编写更短的(没有分号)方法吗?

@staticmethod
def __add(a, b):
    value = a + b
    if value > 1:
        integer = int(value)
        if value == integer:
            return 1.0
        return value - integer
    if value < 0:
        integer = int(value)
        if value == integer:
            return 0.0
        return value - integer + 1
    return value

代码类似于%,但它允许端点无论代码修改结束值的是什么。

3 个答案:

答案 0 :(得分:1)

return 1 - (-value%1) if value > 0 else value%1

答案 1 :(得分:0)

为什么不:

value = (a + b) % 1.0
if (value == 0.0 and a + b > 0) value = 1.0

我不确定为什么第二行上需要a + b > 0条件,但如果a + b是正整数则匹配返回1的代码中的行为,如果{{1是零或负整数。当a + b是整数而不是0时,您想要返回1的具体原因是什么?

编辑:进一步查看文档,第一行应该是a + bvalue = fmod(a + b, 1.0) + (1.0 if a + b < 0.0 else 0.0)建议更精确,第二部分要更正结果的符号。)

答案 2 :(得分:0)

您可以使用以下方法。 <{1}}范围之外的颜色值已正确修改。

0.0 - 1.0