整体长度的差异被称为字符串

时间:2014-03-20 01:18:55

标签: python math casting

我在使用Python 3.3.4

为什么两个数字的乘积长度正确,但两个数字的红利长度不正确?

示例:

y = 10 / 2
len(str(y)) #outputs 3 (incorrect - should be 1)

y = 10 * 2
len(str(y)) #outputs 2 (correct)

如果这是一个愚蠢的问题,请原谅我。

2 个答案:

答案 0 :(得分:1)

y = 10 / 2
print(y)
# 5.0

将数字5.0转换为字符串时,它有三个字符。这就是数字长度为3的原因。

如果您正在寻找分区,那么您应该使用//

y = 10 // 2
print(y)
# 5
print(len(str(y)))
# 1

两种方法之间的时间比较

from timeit import timeit
print(timeit("len(str(int(10/2)))"))
# 0.3285439129685983
print(timeit("len(str(10//2))"))
# 0.2169595289742574

答案 1 :(得分:0)

如果您只打印y,这将 更简单。

Python 3默认为 true division PEP 238),它实质上将所有内容提升为浮点数。

所以10 / 25.0,作为字符串,有三个字符。