python计算机二级自学遇到的问题

问题遇到的现象和发生背景
#获取用户的一个小数并提取整数部分
a = eval(input('请输入一个小数'))
b = int(a)
print('{}的小数部分是{}'.format(a,a-b))


问题相关代码,请勿粘贴截图

=
请输入一个小数2.3
2.3的小数部分是0.2999999999999998

运行结果及报错内容

疑惑:这个程序为什么得出的结果不正确

我的解答思路和尝试过的方法
我想要达到的结果

参考一下这个
https://blog.csdn.net/qq_38239282/article/details/105743718

计算机中保存数字的寄存器是使用二进制来保存数字的,有的有限十进制小数只能使用无限的二进制小数表示,因此浮点数计算存在误差,可以使用decimal模块解决


from decimal import Decimal
#获取用户的一个小数并提取整数部分
a = Decimal(input('请输入一个小数'))
b = int(a)
print('{}的小数部分是{}'.format(a,a-b))