如何检查数字是整数还是包含小数

时间:2016-02-29 20:47:49

标签: perl int

如果某个数字为2017且我将其除以4,则会得到504.25

如果数字为2016,我将其除以4,我得到504

我的问题是,有没有办法使用perl检查一个被分割的数字,如果答案是一个整数并且总共有NO十进制数?

更新:我从下面选择的答案中得到了它。我试图检查这是否是闰年,因为今天我的代码坏了,因为我的代码从cron作业运行,设置为在每个月的最后一天运行。通常对于feb来说,这是28日,所以它在28日运行并关闭网站完成月末维护。所以我现在所做的是在2月28日和2月29日运行(如果有第29个)并且在代码中,我现在检查它是否是闰年:

my $_leapNum = 4; # Leap year is always divisible by 4 with no remainder...
my $_NotLeapRemain = $_lTimeYYYY % $_leapNum; # I have $_lTimeYYYY built for the year only - longyear

if($_NotLeapRemain) {
    my $_isLeapYear = 0;
} else {
    my $_isLeapYear = 1;
}

然后我检查是否是闰年。如果是,那么我检查当天是否是28日,如果是,那么它就会退出。如果它是第29个,那么它就会按照它的目的去做。

我测试了它,现在效果很好。

感谢您的帮助。 富

1 个答案:

答案 0 :(得分:2)

如果您想知道将$dividend除以$divisor的结果是整数还是带小数部分的数字,您可以先测试该条件:

if (my $remainder = $dividend % $divisor) {
    print "$dividend cannot be divided evenly by $divisor.",
          " There is a remainder of $remainder.\n";
}
else {
    print "$dividend is evenly divisible by $divisor,",
          " and the result is ", $divident / $divisor, "\n";
}

*编辑:*此答案是针对原始未经编辑的问题发布的,该问题询问如何确定除法结果是否包含小数部分。现在问题的意义已经改为日期数学,我同意DateTime解决方案要好得多。