Python 总是向下舍入? [重复]

问题描述 投票:0回答:2

我正在尝试完成一项作业,并且非常接近 python 总是将我的答案向下舍入,而不是在应该的时候向上舍入。 这是我的代码:

startingValue = int(input())
RATE = float(input()) /100
TARGET = int(input())
currentValue = startingValue
years = 1

print("Year 0:",'$%s'%(str(int(startingValue)).strip() ))

while years <= TARGET :
  interest = currentValue * RATE
  currentValue += interest
  print ("Year %s:"%(str(years)),'$%s'%(str(int(currentValue)).strip()))
  years += 1

这是我的代码输出的内容: 第 0 年:10000 美元, 第一年:10500美元, 第二年:11025 美元, 第三年:11576 美元, 第四年:12155 美元, 第 5 年:$12762第 6 年:13400 美元, 7年级:14071美元, 8年级:14774美元9年级:15513美元

以下是应该输出的内容: 第 0 年:10000 美元, 第一年:10500美元, 第二年:11025 美元, 第三年:11576 美元, 第四年:12155 美元, 第 5 年:$12763第 6 年:$13401, 7年级:14071美元, 8年级:14775美元9年级:15514美元

我需要它们匹配,又名四舍五入。有人请帮助我:(

python while-loop rounding-error rounding
2个回答
5
投票

在Python中,

int()
构造函数总是向下舍入,例如

>>> int(1.7)
1

https://docs.python.org/2/library/functions.html#int

如果 x 是浮点数,则转换将截断为零。

如果您想始终四舍五入,您需要:

>>> import math
>>> int(math.ceil(1.7))
2

或四舍五入到最接近的值:

>>> int(round(1.7))
2
>>> int(round(1.3))
1

(参见 https://docs.python.org/2/library/functions.html#round ...这个内置函数返回一个浮点数)


0
投票

转换为

int
总是会截断;想象一下它砍掉所有小数点。

使用

round()
舍入到最接近的浮点整数。然后使用
int()
将浮点数转换为整数。

© www.soinside.com 2019 - 2024. All rights reserved.