0

嗨,您能否参考下面的示例代码,让我知道 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

4 回答 4

2

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

如果您尝试以下操作:

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

 print floatcents
 print cents

你很可能最终floatcents得到类似的东西0.999999999789,截断为整数值,变成 0 而不是 1。

您最好使用int((100*val) - (100*dollars))或简单地使用美分的整数值而不是美元的浮点值。

于 2013-10-29T21:01:21.573 回答
0

int() 去掉任何小数点。您应该改用:

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

解释:

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

int(100 * (val - dollars)) 
于 2013-10-29T20:59:21.857 回答
0

整数是整数,浮点数是带小数点的数字,这是外行的术语

于 2013-10-29T21:00:46.777 回答
0

假设 val 是一些计算的结果,例如

  val=12.996

您实际上也应该对美元结果进行四舍五入:

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

  -> $13 + 0 cents , not $12 + 100 cents...
于 2013-10-29T21:44:02.247 回答