PYTHON中Round和Int函数的区别

时间:2013-10-29 20:55:24

标签: python

您好,请参考下面的示例代码,让我知道round和int函数之间的确切区别 OUTPUT: 12美元和0美分 12美元和1.0美分

# code is to convert xx.yy to xx dollars and yy cents **
val = 12.01                  
dollars = int(val)  #Integer value to know how many Dollars
cents = int(100 * (val - dollars))   #Integer value to know how many cents
print str(dollars) + " dollars and " + str(cents) + " cents"

如果我用圆函数编写相同的代码,我会得到正确答案

val = 12.01                  
dollars = int(val)  #Integer value to know how many Dollars
cents = round(100 * (val - dollars))   #Integer value to know how many cents
print str(dollars) + " dollars and " + str(cents) + " cents"

当我使用int时,不确定为什么它显示为0美分。

4 个答案:

答案 0 :(得分:2)

您正在使用浮点值,它们不会干净地映射到十进制值。

如果你尝试这样的话:

floatcents = 100 * (val - dollars)
cents = int(floatcents)

 print floatcents
 print cents

最终floatcents可能会像0.999999999789那样被截断为整数值,而不是1。

您可能最好使用int((100*val) - (100*dollars))或仅使用美分的整数值,而不是使用美元的浮动值。

答案 1 :(得分:0)

int()删除任何小数点。你应该使用:

cents = float(100 * (val - dollars))   #Integer value to know how many cents

说明:

以下代码将所有内容视为整数,因此(val - dollars)将为0而不是0.1,因此乘以100仍会给出0。

int(100 * (val - dollars)) 

答案 2 :(得分:0)

整数是整数 浮点数是一个带小数点的数字 那是外行人的条件

答案 3 :(得分:0)

假设val是某些计算的结果,可能是例如

  val=12.996

你应该实际上围绕美元结果:

  dollar = round(val*100)/100
  cents = round(val*100)-dollar*100

  -> $13 + 0 cents , not $12 + 100 cents...