def significant_1(s):
    l = len(str(s))
a = ('%.' + str(l) + 'E') % decimal.Decimal(s)
significate_d = a.split('.')[0]
times = a.split('E')[1]
result = int(significate_d) * 10 ** int(times)
return result
print(significant_1(1999))
print(significant_1(1945.01))
print(significant_1(0.45))
Python – как округлить число с плавающей запятой до 1 значащей цифры