我正在努力将1英尺的价值转换为12英寸,以此计算人的身高(单位为英寸),例如:5.11意味着一个身高为5英尺11英寸的人总共有71英寸。请问是否有任何一种Python方法可以将浮点数的整数部分和小数部分分离以进行进一步计算?欢迎任何建议。
我正在努力将1英尺的价值转换为12英寸,以此计算人的身高(单位为英寸),例如:5.11意味着一个身高为5英尺11英寸的人总共有71英寸。请问是否有任何一种Python方法可以将浮点数的整数部分和小数部分分离以进行进一步计算?欢迎任何建议。
int()
函数:>>>int(5.1)
5
要分离浮点部分,请用整数减去浮点数:
>>>5.1 - int(5.1)
0.1
或者你可以用 1 取模浮点数来得到浮点数的余数部分 (即小数部分):
>>> 5.1 % 1
0.09999999999999964 #use the round() function if you want 0.1
%
解决方案在处理负数时会出现问题(例如:-5.1 % 1 == 0.9000000000000004
)。 - Delgan对于您来说,5.11
不是浮点数。如果是的话,它将意味着5.11英尺,即61.32英寸。
5.11
是一个包含两个数据和分隔符的字符串 - 就像解析一个字符串一样!如果您将分隔符更改为更传统的 '
(即5'11
),则很明显它不是一个单一的浮点数:
raw = raw_input("Enter feet'inches")
feet, inches = map(int, raw.split("'", 1))
另一种方法是使用divmod(函数或运算符),将数字1作为分母(除数):
>>> divmod(5.11, 1)
(5.0, 0.11000000000000032)
>>> 5.11.__divmod__(1.)
(5.0, 0.11000000000000032)
__divmod__
! - EricmyList.__len__()
吗? - Eric__divmod__
。与len不同,divmod函数没有做任何特殊处理(对于某些错误类型,len会抛出异常)。 - Hugo Corrá__method__
会让人想到“这里发生了一些不寻常的事情”。不过你说得对,有时候也可以使用它 - 例如,在使用super
时,这是唯一的方法:super(MyClass, self).__divmod__(other)
。 - Eric