我有几个浮点值,两端都有必要的零。
我拥有的一个号码是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()总是浮点数。任何解决方案??
答案 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.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
。
答案 2 :(得分:-1)
然后我们必须将float存储为字符串值。以下行可以回答它是默认行为的问题。
mynum = input('Enter your number: ')
print('Hello', mynum)
print(len(mynum))