检查数字是浮点数还是整数都不是问题。
以下是一些简单的方法:
a = 4
b = 4.123
res = float(a).is_integer()
返回True
或False
if type(a) == int:
print("a ist an integer")
if a - int(a) == 0:
print('Integer')
else:
print('No Integer')
但是当我有一个大号的Nummer时,它将不再起作用:
a = 31231242354234534534534534534534534534534534535434645755453543543453534534534534534535345346756423423
b = 31231242354234534534534534534534534534534534535434645755453543543453534534534534534535345346756423423.111
我想检查非常多的数字来解决数学问题。
编辑: 我应该提到,这些数字也应该被识别为整数:
5.243
6.0
312423423534534564564567457546756756856856745634523423423423423.0
我的计算结果是浮点数。我想检查结果是否为整数。
对于大量数字,常规方法不起作用。
答案 0 :(得分:2)
这对于示例中显示的数量级数是不可能的,并且通常实际上是不可能的,因为最终浮点数的精度变得太粗糙而无法将整数与浮点数区分开。例如:
>>> 100000000000000000000000.5 == \
... 100000000000000000000000.0
False
>>> 1000000000000000000000000.5 == \
... 1000000000000000000000000.0
True
两个输入都解析为相同的数字。如果要区分它们,则需要在对数字进行评估之前进入并访问原始来源(文本)。
答案 1 :(得分:0)
仅检查类型可能会产生误导。如果您要解决一个数学问题,即您的函数溢出了连续的数字范围,并且要检查哪个整数,那么type(a)
可能对您不起作用。
解决方案:改用is_integer
。
a = 31231242354234534534534534534534534534534534535434645755453543543453534534534534534535345346756423423.0
print('Type: ',type(a))
print('Is integer: ',a.is_integer())
第一张支票给您float
,而另一张支票告诉您数字是整数。
答案 2 :(得分:0)
您可以使用 isinstance 。这是示例:
a = 100
print(isinstance(a, int))
它将打印 True 或 False 值,具体取决于 a 变量(在这种情况下为 True )的值类型以上)。
print(isinstance(a, float))
在上面的示例中,它将显示 False
答案 3 :(得分:0)
length = (int) (math.log10(a) + 1);
仅返回整数的长度。
在这里尝试: https://onlinegdb.com/Sk1jmeTxV
import math
a= 31231242354234534534534534534534534534534534535434645755453543543453534534534534534535345346756423423
b = 31231242354234534534534534534534534534534534535434645755453543543453534534534534534535345346756423423.111
length = (int) (math.log10(a) + 1);
if length ==len(str(abs(a))):
print ('is a perfect int');
答案 4 :(得分:0)
就像从输入或文件中获取数字一样,您可以使用小数模块:
import decimal
ctx=decimal.Context(prec=200)
b=decimal.Decimal("31231242354234534534534534534534534534534534535434645755453543543453534534534534534535345346756423423.111")
print( ctx.divmod(b,1) )
Out: Decimal('31231242354234534534534534534534534534534534535434645755453543543453534534534534534535345346756423423'), Decimal('0.111'))
print(ctx.divmod(b,1)[1].is_zero()) # integer?
Out: False
答案 5 :(得分:0)
我要检查数字“ x”的立方根是否为整数。
根计算的结果是浮点数。
例如,应检查以下数字“ y”:
x = 12341254534XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
y = x**(1/3) # y = cube root of x
y = 6456535XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.2146544753325
or
y = 6456535XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.0
or
y = 6456535XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.99999999999646546547
这不适用于这些大数字。
答案 6 :(得分:-1)
为什么不使用正则表达式?