python的问题啊啊随时随地的

python中输入一个浮点数(带有小数),如何输出它的十分位

import re
a=input()
b='\.\d'
print(re.findall(b,a))

这是一个好问题。原以为浮点数减去其整数部分,再取其首位即是结果,但是,结果总是出人意料。比如:

>>> 5.3-5
0.2999999999999998

基于浮点数精度问题,我觉得下面的写法是最靠谱的:

>>> a = 5.3
>>> str(a).split('.')[1][0]
'3'

考虑代码的适应性,可以写成一个函数如下:

>>> def get_decile(d):
    if not isinstance(d, (int,float)):
        return None
    items = str(d).split('.')
    if len(items) > 1:
        return items[1][0]
    else:
        return None

    
>>> get_decile(5.35)
'3'