您好,请参考下面的示例代码,让我知道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美分。
答案 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...