Python:在末尾找到带有零的浮点数的长度

时间:2018-03-19 03:43:40

标签: python

我有几个浮点值,两端都有必要的零。

我拥有的一个号码是0.0013790

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

我不能让我的程序在不一定需要时通过格式添加零,因为有些数字会比其他数字短。当零结束时,如何找到这些数字的实际长度?

我不能创建if语句来检查数字.endswith 0,因为它永远不会。零总是掉线!我已经检查了浮动字符串的长度,仍然会丢弃零!许多数字不会以零结尾,所以我不能简单地添加一个到找到的长度。请帮忙!

要测试的数字: 输入_时,你应该得到_。如果你能得到以下与其他一些数字一起工作,请给我解决方案。几个小时我一直在大脑!谢谢。

通缉结果:0.12345 -> 7, 0.123450 -> 8, 0.1234500 -> 9

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

3 个答案:

答案 0 :(得分:0)

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

如果您要求用户输入值:

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

如果您使用的是Python 2,请务必使用raw_input而不是input

只要您不将值转换为浮动值,就应该为len()获取正确的值。

答案 1 :(得分:0)

如果要追踪长度而不依赖浮点值,则需要将值存储为字符串。

浮点值没有长度,尾随0不影响值,因此它们产生相同的浮点数。这意味着在定义之后,有方式来确定是否使用0.123450.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

答案 2 :(得分:-1)

然后我们必须将float存储为字符串值。以下行可以回答它是默认行为的问题。

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