Python:求一个端点为零的浮点数的长度



我有几个浮点值,它们的末尾有必要的零。

我有一个数字是0.0013790.

当找到这个长度时,我得到8什么时候应该得到9,因为最后的零被丢弃了。我不能使用.format(),因为有些数字比其他数字短,并且没有我希望它们设置的具体长度。如果我有一个在小数点后七位数字长float并将格式设置为8,我会得到一个不应该属于那里的额外零。

我不能让我的程序在并不总是需要的时候通过格式添加零,因为有些数字会比其他数字短。当零位于末尾时,如何找到这些数字的实际长度?

我不能做一个 if 语句来检查数字是否.endswith 0,因为它永远不会这样做。零总是被丢弃!我已经在检查浮点数的字符串长度,但仍然删除了零!许多数字不会以零结尾,所以我不能简单地在找到的长度上加一个。请帮忙!

要测试的数字:输入 _ 时,您应该得到 _。如果您可以让以下内容与其他一些数字一起使用,请给我解决方案。我已经绞尽脑汁了几个小时!!谢谢。

想要的结果:0.12345 -> 7, 0.123450 -> 8, 0.1234500 -> 9.

更新: 感谢您的解决方案,但数字不是输入。我将它们设置为 eval() 函数,因为我有大约 1000 个变量需要从 websocket 动态访问。值检索得很好,但如果我没记错的话,eval() 默认为 float。将它从浮点数切换到字符串对我没有多大好处,因为我猜测 eval() 总是一个浮点数。任何解决方案??

如果要独立于浮点值跟踪长度,则需要将值存储为字符串。

浮点值没有长度,尾随 0 不会影响该值,因此它们会产生相同的浮点数。这意味着在定义后,无法确定0.12345是使用0.12345还是0.12345000000定义的。

0.12345 is 0.123450  # True
0.12345 is 0.1234500 # True
len(0.12345) # TypeError: object of type 'float' has no len()

对于这些浮点数的字符串表示,一切正常:

"0.12345" is "0.123450"    # False
"0.12345" is "0.1234500"   # False
len("0.12345")             # 7

因此,您应该将这些值存储为字符串,并在必要时将它们转换为float

如果先将输入转换为数字,然后再转换为字符串,则会丢失任何无关紧要的数字。

如果要求用户输入值:

>>> foo = input('Enter the number here: ')
Enter the number here: 0.0013790
>>> len(foo)
9

如果您使用的是 Python 2,请确保使用raw_input而不是input

只要不将值转换为浮点数,就应该获得正确的值len().

然后我们必须将浮点数存储为字符串值。以下行可能是默认行为问题的答案。

mynum = input('Enter your number: ')
print('Hello', mynum)
print(len(mynum))

最新更新