Search the archives!
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Javascript] Is integer?
- From: lists at dwsasia.com (Peter Lauri)
- Subject: [Javascript] Is integer?
- Date: Mon May 29 10:15:12 2006
Great stuff Nick and all others that answered, I followed you on every word that you said (lucky that I have mathematic background). It solved both the LEAP issues and the JAVASCRIPT issues that I wanted to solve so thank you a lot. Very easy solution and it also give insight in how to use operators directly to return true or false. I did if-else and returned after that, but you simplified it and just returned the statement directly. Thanks again :) Regards, Peter Lauri -----Original Message----- From: javascript-bounces@xxxxxxxxxx [mailto:javascript-bounces@xxxxxxxxxx] On Behalf Of Nick Fitzsimons Sent: Monday, May 29, 2006 9:18 PM To: [JavaScript List] Subject: Re: [Javascript] Is integer? Peter Lauri wrote: > Best group member, > > Is there any function that checks if something is an integer? I did not find > one and created this temporary function: > > function isInteger(thenumber) { > thenumberceil = Math.ceil(thenumber); > if(thenumberceil>thenumber) return false; > else return true; > } You could use: function isInteger(thenumber) { return parseInt(thenumber) == thenumber; } > Why I actually need this is because I need to find out if a year is a "skott > year" (do not know the English word, but the years when February has 29 days > instead of 28). Is there any function for that? I created this temporary > function: > > function isSkottYear(y) { > yeardiv = y/4; > if(isInteger(yeardiv)) return true; > else return false; > } > It's called a "leap year" in English. One problem with your current function is that it doesn't account of the special rules governing century years: specifically, a century year (e.g. 1600, 1700, 1800) is only a leap year if it's divisible by 400. So 1600 was a leap year, but 1700, 1800 and 1900 weren't. (Even Microsoft and other big corporations have got this wrong in the past.) To take account of this, use: function isSkottYear(y) { /* y should be evenly divisible by 4, unless it's a century year (evenly divisible by 100) in which case it must also be evenly divisible by 400 */ return (y % 4 == 0) && ((y % 100 != 0) !! (y % 400 == 0)); } This uses the "%" operator, properly called the modulus operator: it returns the remainder of an integer division, so for example 10 mod 4 = 2. By comparing the result to zero, you get rid of the need for isInteger. The different conditions are then combined using logical AND (&&) and logical OR (||) to produce either true or false: year IS divisible-without-remainder by 4 (y % 4 == 0) AND (year IS NOT divisible-without-remainder by 100 (y % 100 != 0) OR year IS divisible-without-remainder by 400) In even simpler language (I'm trying to make sure my logic is right here :-), this means "The year is divisible by 4, and is either not divisible by 100 or is divisible by 400." Complicated things, dates :-) HTH, Nick. P.S. For more on the % operator, see the Core JavaScript documentation at <http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Operator s:Arithmetic_Operators#.25_.28Modulus.29> or Microsoft's JScript documentation at <http://msdn.microsoft.com/library/en-us/script56/html/087d654f-623b-498d-95 ff-596d26bf674d.asp> -- Nick Fitzsimons http://www.nickfitz.co.uk/ _______________________________________________ Javascript mailing list Javascript@xxxxxxxxxx https://lists.LaTech.edu/mailman/listinfo/javascript
- References:
- [Javascript] Is integer?
- From: Nick Fitzsimons
- [Javascript] Is integer?
- Prev by Date: [Javascript] Is integer?
- Next by Date: [Javascript] Is integer?
- Previous by thread: [Javascript] Is integer?
- Next by thread: [Javascript] Is integer?
- Index(es):