检查Python小数是否以特定值结尾

时间:2019-01-03 17:48:45

标签: python decimal

我有一堆小数对象。我想测试每个人是否以.43结尾。我可以先将其转换为字符串:

>>> num = Decimal('1.43')
>>> str(num).endswith('.43')
True

但是如果我不知道十进制的创建精度,那将失败。

>>> num = Decimal('1.4300')
>>> str(num).endswith('.43')
False

我可以进行字符串转换,并检查其中是否包含.43

>>> num = Decimal('1.4300')
>>> '.43' in str(num)
True

但这也与我不想要的其他值匹配。

>>> num = Decimal('1.4321')
>>> '.43' in str(num)
True

如何检查小数是否以.43结尾,并带有任意数量的尾随零?

4 个答案:

答案 0 :(得分:6)

最好在此处使用数学推理,避免使用浮点域(不准确)和字符串域(不必要)。如果您从以svg path { fill: blue; } 结尾的数字中减去0.43,则应该保留一个整数,然后可以使用模运算符.43来检查该值:

%

答案 1 :(得分:2)

您可以像这样利用模运算符:

(模运算符在这里去除整数值。rsa变成32.48%1。绝对值函数使其变为正数。0.48变成abs(-32.48)。谢谢@威姆。)

32.48

答案 2 :(得分:2)

您可以转换为字符串,然后去除尾随的0,然后再进行如下检查。

num = Decimal('1.4300')
print(str(num).rstrip('0').endswith('.43'))
#Prints True

答案 3 :(得分:0)

您可以去除零字符串

DATE