我正在尝试创建一个检查数字是否为整数的函数。我用相同的问题看了所有这些其他线程,唯一的问题是: 我使用Hopscotch。
因此我只能访问以下运算符:
imap
有没有办法检查一个数字是否只是一个整数?
答案 0 :(得分:3)
重复块会将您的数字四舍五入为整数。因此,如果您重复原始数字并增加测试编号,您可以检查它们在最后是否相等。
正如其他人所说,为了实现这个目标,原始数字必须是积极的。要解决此问题,如果原始数字小于0,则乘以-1。
答案 1 :(得分:0)
伪代码:
if value == 0{
value was zero
}
else if value > 0{
while value >= 1
value = value - 1
if value == 0
was a positive non-zero integer
else
was a positive decimal
}
else {
while value <= -1
value = value + 1
if value == 0
was a negative non-zero integer
else
was a negative decimal
}
答案 2 :(得分:0)
@scottysmalls答案将采取约N
步骤,其中N
是您的号码。如果N
很大,则可能需要很长时间。更快的方法是减去2的幂,最终将采取大约2 * log 2 N
步。在伪代码中:
if value < 0 {
value = -1 * value
}
powerOfTwo = 1
while powerOfTwo < value {
powerOfTwo = 2 * powerOfTwo
}
while powerOfTwo >= 1 {
if value > powerOfTwo {
value = value - powerOfTwo
}
powerOfTwo = powerOfTwo / 2
}
if value > 0 {
value was a decimal
}