python 中的四舍五入不起作用

rounding in python not working

我一直无法尝试四舍五入我找到正多边形面积然后将周长平方的问题的答案。我的最终答案应该是面积加上周长(平方),四舍五入到小数点后四位。我的数学似乎是正确的,但是,无论我使用什么数字作为输入,小数点后都只有零。我附上了我的代码的屏幕截图和来自我使用的检查器的错误消息。

import math

def polysum(n, s):
    a = ((0.25 * n * s ** 2) / (math.tan(math.pi / 2)))
    p = ((n * s) ** 2)
    total = a + p
    return '%.4f' % round(total)

print polysum(8, 8)

当然,您只会在小数点后得到零,因为您正在使用 round() 函数删除小数点后的所有数字。如果这不是您想要的,请不要这样做。只是做:

return "%.4f" % total

或者可能:

return round(total, 4)

有两个问题:

  1. return '%.4f' % round(total) 更改为 return round(total,4) 否则您将返回 str 舍入到最接近的整数。看起来预期的输出是 float.
  2. math.tan(math.pi / 2)的因数不正确。这应该评估为 infinity (如果不是浮点近似值)并且显然不是你想要的。应该是 math.tan(math.pi / 2 / n).
import math
def polysum(n, s):
    a = (0.25 * n * s ** 2) / (math.tan(math.pi / n))
    p = ((n * s) ** 2)
    total = a + p
    ans = round(total, 4)
    return ans

print polysum(8,8)
print polysum(4, 89)
from math import *
def polysum(n, s):
    lst = [(0.25 * n * s **2) / tan(pi / n), ((n * s) ** 2)]
    return round(sum(lst), 4)    

两个测试用例我都试过了。输出匹配。