python - 查看数字是否为小数的最佳方法
问题描述
我正在寻找区分像
2.0
or这样的数字2
和像2.4
. 最好的方法是什么?目前我正在做:
def is_fractional(num):
if not str(num).replace('.','').isdigit(): return
return float(num) != int(num)
>>> is_fractional(2)
False
>>> is_fractional(2.1)
True
>>> is_fractional(2.0)
False
>>> is_fractional('a')
>>>
解决方案
该操作是内置的:
>>> 5.0.is_integer()
True
>>> 5.00000001.is_integer()
False
>>> 4.9999999.is_integer()
False
文档在这里。
附录
最初的解决方案仅适用于float
. 这是一个更完整的答案,带有测试:
from decimal import Decimal
def is_integer(x):
if isinstance(x, int):
return True
elif isinstance(x, float):
return x.is_integer()
elif isinstance(x, Decimal):
return x.as_integer_ratio()[1] == 1
return False
good = [
0,
0.0,
3,
-9999999999999999999999,
-2.0000000000000,
Decimal("3.000000"),
Decimal("-9")
]
bad = [
-9.99999999999999,
"dogs",
Decimal("-4.00000000000000000000000000000000001"),
Decimal("0.99999999999999999999999999999999999")
]
for x in good:
assert is_integer(x)
for x in bad:
assert not is_integer(x)
print("All tests passed")
推荐阅读
- javascript - 如何使用 jsPsych 心理物理学插件中的“手动”属性调用函数来绘制刺激?
- javascript - 你如何获得它的最高数字(值)并使用 Javascript 在 Json 的 ObjectArray 中显示键 [name]?
- html - 第一次迭代后无法获得选择的选择值
- java - 如何使用java Map
在 JOOQ 中生成插入和更新 sql 查询(不生成代码)? - react-native - 将异步函数的结果存储到变量中
- autocomplete - 如何在 Visual Studio 代码中自动完成工作?
- php - 这是相互替换 .txt 文件的代码,所以我想这样做,但我不知道我哪里出错了任何提示?
- hibernate - 创建名为“expertiseRepository”的 bean 时出错:查询方法公共抽象 java.util.List 的验证失败
- android - 如何在现有主题中扩展 API 依赖主题条目?
- python - Beutifulsoup 有时打印 None 有时