我正在计算几个人之间的金额划分。在计算出第一个人的支付后,其他两个人的支付不正确。
对斯坦来说是1/2。 2/3剩下的是Kyle。 其余部分将与Butters和Wendy平分。我对斯坦的第一次分裂是正确的,但在那之后似乎无法找出正确的编码方式。
def main():
estate = int(input('Enter value of Kennys estate '))
stan = estate / 2
kyle = stan * .66
wendy_butters = kyle / 2
print('stan gets$ ',format (stan,' .2f'))
print('kyle gets$ ',format (kyle,' .2f'))
print('Butters and Wendy each get $ ',format (wendy_butters,' .2f'))
main ()
答案 0 :(得分:0)
def main():
estate = int(input('Enter value of Kennys estate '))
stan = estate / (2.0)
kyle = (estate - stan) * (2.0/3)
wendy_butters = (estate - (stan + kyle))/2.0
print('stan gets$ ',format (stan,' .2f'))
print('kyle gets$ ',format (kyle,' .2f'))
print('Butters and Wendy each get $ ',format (wendy_butters,' .2f'))
main ()
我对计算进行了更改,检查它是否适合您。
<强>输出:强>
Enter value of Kennys estate 450
stan gets$ 225.00
kyle gets$ 150.00
Butters and Wendy each get $ 37.50
答案 1 :(得分:0)
你所拥有的大部分内容都是正确的,但有一条注意事项是stan * .66
来计算凯尔的部分并不准确,而且随着estate
变大,它会变得更加不精确。你应该使用Python 3或from __future__ import division
,然后你可以做
kyle = stan * 2 / 3
为计算最后一笔金额,在Stan和Kyle获得股票后,余额为estate - stan - kyle
- &gt; stan * 2 - stan - kyle
- &gt; stan - kyle
。简单的数学。
wendy_butters = (stan - kyle) / 2
答案 2 :(得分:0)
您的问题是因为默认整数除法,您需要将其转换为浮点除法
31/2 = 15
应该是15.5
所以对于Kyle来说,它计算为15*.66
,而不是16*.66
(剩下的一个)
解决方案:
对于浮点除法,您可以将其写为
31/2.0 = 15.5
或31/(float(2)) = 15.5