如何在Python3中迭代浮点?
现在我有一个变量,x=1001.0010101 从这个x,我想分为两部分:如何在Python3中迭代浮点?,python,python-3.x,for-loop,floating-point,Python,Python 3.x,For Loop,Floating Point,现在我有一个变量,x=1001.0010101 从这个x,我想分为两部分: x = 1001.0010101 val_int = int(x) #get val_int = 1001 val_fract = {0:.5f}".format(a - val_int) #get val_fract = 0.00101 是否可以使用for循环迭代val_fract如下:(忽略int部分和小数点) 我试了很多次,但都没能完成,系统告诉我 Traceb
x = 1001.0010101
val_int = int(x) #get val_int = 1001
val_fract = {0:.5f}".format(a - val_int) #get val_fract = 0.00101
是否可以使用for循环迭代val_fract如下:(忽略int部分和小数点)
我试了很多次,但都没能完成,系统告诉我
Traceback (most recent call last):
File "python", line 46, in <module>
TypeError: 'float' object is not iterable
回溯(最近一次呼叫最后一次):
文件“python”,第46行,在
TypeError:“float”对象不可编辑
非常感谢您的帮助,非常感谢。您可以使用python中的
math
模块来分隔小数部分和整数部分
import math
x = 1001.0010101
math.modf(x)
#output:(0.0010101000000304339, 1001.0)
根据需要迭代
如果您对十进制读取末尾的额外数字有疑问,可以使用python中的
math
模块来分隔十进制部分和整数部分
import math
x = 1001.0010101
math.modf(x)
#output:(0.0010101000000304339, 1001.0)
根据需要迭代
我不知道,为什么您在评论中建议缺少前导零:
x = 1001.0010101
#separate fractional from integer part
frac = str(x).split(".")
for digit in frac[1]:
print(digit)
或者,您可以将这两个部分转换为整数列表:
#integer digits
x_int = list(map(int, frac[0]))
#fractional digits
x_frac = list(map(int, frac[1]))
我不知道,为什么您在评论中建议缺少前导零:
x = 1001.0010101
#separate fractional from integer part
frac = str(x).split(".")
for digit in frac[1]:
print(digit)
或者,您可以将这两个部分转换为整数列表:
#integer digits
x_int = list(map(int, frac[0]))
#fractional digits
x_frac = list(map(int, frac[1]))
输出:
0
0
1
0
1
输出:
0
0
1
0
1
您可能希望将变量转换为字符串对象,然后使用正则表达式获得所需的内容。但是,小数部分没有完全分开,我的意思是第二部分只取10101,**00**(这两个零)10101缺失。你的拆分方法代码是什么,你能把它附加到你的问题中吗?你能解释一下这是为了什么吗?这是一件奇怪的事情,我怀疑有更好的方法来解决潜在的问题。请注意,值
1001.0010101
不能在Pythonfloat
中表示。您所能得到的最好结果是1001.00101010000030433875508606433868408203125
。要查看小数部分中的所有数字吗?如果不是,那么您截断它们的标准是什么?那么您肯定不应该将1001.0010101
存储在Pythonfloat
中。您应该将其表示为字符串,而不是数字。您可能希望将变量转换为字符串对象,然后使用正则表达式来获取所需内容。我刚刚尝试使用拆分方法来分隔两部分。但是,小数部分没有完全分开,我的意思是第二部分只取10101,**00**(这两个零)10101缺失。你的拆分方法代码是什么,你能把它附加到你的问题中吗?你能解释一下这是为了什么吗?这是一件奇怪的事情,我怀疑有更好的方法来解决潜在的问题。请注意,值1001.0010101
不能在Pythonfloat
中表示。您所能得到的最好结果是1001.00101010000030433875508606433868408203125
。要查看小数部分中的所有数字吗?如果不是,那么您截断它们的标准是什么?那么您肯定不应该将1001.0010101
存储在Pythonfloat
中。你应该把它表示成一个字符串,而不是一个数字。这个答案没有满足我的愿望!哈哈,没关系,我有新东西!谢谢这个答案没有实现我的愿望!哈哈,没关系,我有新东西!谢谢谢谢你,伙计!很好!因为我就像用num=123.456 split\u num=str(num)转换小数部分一样。split('.')int\u part=int(split\u num[0])decimal\u part=int(split\u num[1])
请参考,使用这种方法有它的缺点。谢谢!很好!因为我就像用num=123.456 split\u num=str(num)转换小数部分一样。split('.')int\u part=int(split\u num[0])decimal\u part=int(split\u num[1])
请参考它,使用这种方法有缺点。欢迎。如果它解决了您的问题,请接受ans。谢谢,不客气。如果它解决了您的问题,请接受ans。谢谢