【问题标题】:Difference between Round and Int function in PYTHONPYTHON中Round和Int函数的区别
【发布时间】:2013-10-29 20:55:23
【问题描述】:

您好,请您参考下面的示例代码,让我知道 round 和 int 函数之间的确切区别是什么 输出: 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 美分。

【问题讨论】:

  • 这是我第一次使用stackoverflow。请忽略格式错误。下面是使用 ROUND 函数的代码:

标签: python


【解决方案1】:

您使用的是浮点值,它们不能清晰地映射到十进制值。

如果你尝试类似:

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

 print floatcents
 print cents

你很可能最终得到floatcents 类似于0.999999999789 并且被截断为整数值后变为0 而不是1。

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

【讨论】:

    【解决方案2】:

    整数是整数 浮点数是带小数点的数字 这是外行的说法

    【讨论】:

      【解决方案3】:

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

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

      解释:

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

      int(100 * (val - dollars)) 
      

      【讨论】:

        【解决方案4】:

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

          val=12.996
        

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

          dollar = round(val*100)/100
          cents = round(val*100)-dollar*100
        
          -> $13 + 0 cents , not $12 + 100 cents...
        

        【讨论】:

          猜你喜欢
          • 2017-09-25
          • 2013-09-29
          • 1970-01-01
          • 1970-01-01
          • 2016-02-17
          • 2013-05-20
          • 2012-01-15
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多