如果某个数字为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个,那么它就会按照它的目的去做。
我测试了它,现在效果很好。
感谢您的帮助。 富
答案 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解决方案要好得多。