我有几个浮点值,它们的末尾有必要的零。
我有一个数字是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))