您現在的位置: 365建站網 > 365學習 > 閏年算法和閏年計算方法

閏年算法和閏年計算方法

文章來源:365jz.com     點擊數:791    更新時間:2018-10-20 20:26   參與評論

一:什么是閏年

關于公歷閏年是這樣規定的:地球繞太陽公轉一周叫做一回歸年,一回歸年長365日5時48分46秒。
因此,公歷規定有平年和閏年,平年一年有365日,比回歸年短0.242199日,一般用四位小數計算,及0.2422,四年共短0.9688日,故每四年增加一日,并且把這多出了的一天放到二月份,所以閏年的二月份有29天,這一天也叫閏日,這一年共有366日,就是閏年。但四年增加一日比四個回歸年又多0.0312日,400年后將多3.12日,故在400年中少設3個閏年,也就是在400年中只設97個閏年,這樣公歷年的平均長度與回歸年就相近似了。由此規定:年份是整百數的必須是400的倍數才是閏年,例如1900年、2100年就不是閏年。

也就我們居住的地球總是繞著太陽旋轉的。地球繞太陽轉一圈需要365天5時48分46秒,也就是365.2422天。為了方便,一年定為365天,叫做平年;這樣每過四年差不多就要多出一天來,把這一天加在2月里,這一年就有366天,叫做閏年。 
通常,每四年里有三個平年一個閏年。公歷年份是4的倍數的,一般都是閏年。

按照每四年一個閏年計算,平均每年就要多算出0.0078天,這樣經過四百年就會多算出大約3天來,因此,每四百年中要減少三個閏年。所以規定,公歷年份是整百數的,必須是400的倍數的才是閏年,不是400的倍數的就是平年。

也就是我們通常所說的: 
四年一閏,百年不閏,四百年再閏。

二:數學中計算閏年的方法
一般的在數學運算中,或者在公歷紀年法中,能被4整除的大多是閏年,除了那些能被100整除而不能被400整除的年份以外。

①非世紀年能被4整除,且不能被100整除的是閏年。(如2004年是閏年,1901年不是閏年)
②世紀年能被400整除的是閏年。(如2000年少閏年,1900年不是閏年)


三:閏年的差值計算 
現時的公歷以回歸年為“年”的計算基礎,而一個回歸年大約等于365.24220日。因為在平年公歷只計算365日,結果四年后便會累積0.24220×4=0.9688日,大約等于一日,所以便逢四年增加一日閏日以抵銷這0.9688日。但是還是稍微的少了點,這樣一時沒有多少時間,可是到了一個百年時就會相差了大約0.78天,即多加了。所以要再次規定細節,到100年是不在加,這樣又會每100年的時間少了0.22天,到了400年時,差了大約0.9天了,所以那個百年是要再加上潤日才可以基本對應的。但是這樣仍然會有些許的誤差,但是已經相當的小了。我只是大致進行了計算,實際的是相差很小很小的,微乎其微的,但是日積月累卻可以百年出“日”的不起眼的小數上。下面就讓每我們一起來計算一下這個差值:
使用實際時間計算:
一個回歸年大約是:365日5時48分46秒,我們把不足一天的時間轉換成秒數:5×3600+48×60+46=20926秒
而一天的秒數是:24×3600=86400秒
我們通常計算的是以400年為一個循環,也就是前面所說的:四年一閏,百年不閏,四百年再閏。
那么400年的時間總共天數和多出的秒數:天數:365×400=146000天,多余秒數:20926×400=8370400秒,
把多出來的秒數轉換成天時分秒的形式:96天21小時6分40秒
然后把這個秒數轉換成天的小數:8370400/3600/24=96.87962963
數學計算中常用的數值:
我們通常在數值計算中用到一個回歸年是365.2422天
那么400年的時間是多少呢?應該是365.2422×400,我們把這個計算式分解下,365×400+0.2422*400,其中365×400和前面的一樣,我們這里就不再次計算,我們只算0.2422*400=96.88天
這個96.88天數減去實際天數96.87962963:96.88-96.87962963=0.00037037天
而0.00037037天轉換成秒:0.00037037×24×3600=31.999968秒,大約是32秒
驗證是否相差32秒:
把96.88天的0.88天轉換成秒數:0.88×86400=76032
把76032秒轉換成天時分秒的形式:96天21小時7分12秒

結論:
通過以上數據的計算,我們可以看出每年以365.2422天計算400年為周期,和實際直接的差值是32秒,也就是400年有32秒的誤差。
但是我們實際計算400年都是按97個潤計算,也就是97天 - 96天21小時6分40秒=2小時53分20秒的誤差。
可能有人會問了,時間長了也是有誤差的???你說的對,咱們來計算一下誤差一天要經過多少年:每天的秒數是86400,除以32,然后再乘以400:86400/32*400=108000年,也就是要經過100多萬年會多出1天的誤差,在時間的長河中,人的有生之年相對于108萬年有這樣的誤差存在已經是微乎其微了,可以忽略不計了。就算以2小時53分20秒的誤差計算:400*86400/(2*3600+53*60+20)=3323.077年,也需要經過3000多年的時間會多出一天的時間誤差。
具體使用那個數值?需要精確度到多少?,使用哪一個數值取決于你自己了,我這里只是告訴你各個數值之間的誤差。
聲明:當然我這里的計算也是有誤差的,我這里只精確到秒。


閏年計算

1.能被4整除而不能被100整除.(如2004年就是閏年,1900年不是)

2.能被400整除.(如2000年是閏年)

算法

 public boolean isLeapYear(long year) {
        return ((year & 3) == 0) && ((year % 100) != 0 || (year % 400) == 0);
    }

解析

表達式(a&3)==(a%4)的值是1

因為無論a的值為多少a&3的結果只保留a的最后2位

如a的值為17,它變為二進制為10001,而3為00011,它們相與的結果只有a的1和2位數字保留下來也就是01,因為與1相與就保留原數據,與0相與就變0 如 a&1=a a&0=0

而a%4也是保留a的最后2位,因為只有最后2位的值為3,小于4,其它都>4

--------------------- 

判斷閏年的巧妙算法

package cn.huhui.demoTest;
import java.util.Calendar;
public class Test1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
/*
* 高級算法:調用Calendar類的方法 判斷3月1日 
* 向前偏移一天
*/
Calendar c =Calendar.getInstance();
c.set(1900, 2, 1);
c.add(Calendar.DAY_OF_MONTH, -1);
int day=c.get(Calendar.DAY_OF_MONTH);
System.out.println(day);
}
}


Java算法——判斷某一年是否是閏年

閏年的判定規則是:


如果該年能被4整除且不能被100整除,或者能被400整除,則該年是閏年,否則不是

import java.util.Scanner;
public class LeapYear {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("請輸入一個年份:");
long year = scan.nextLong();
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
System.out.println(year + "年是閏年!");
} else {
System.out.println(year + "年是平年!");
}
}
}


如對本文有疑問,請提交到交流論壇,廣大熱心網友會為你解答??! 點擊進入論壇


發表評論 (791人查看,0條評論)
請自覺遵守互聯網相關的政策法規,嚴禁發布色情、暴力、反動的言論。
用戶名: 驗證碼: 點擊我更換圖片
最新評論
------分隔線----------------------------
自拍偷拍福力视频,偷拍国际精品,麻豆一区福利电影,国产网红视频午夜福利,se视频大全,久久国产AV影院 末成年美女黄网站色应用大全| 苏若雪沈浪全文免费阅读| 欧美长视频免费看| 小树林里我让她高潮了| 超清无码一区二区三区| 超级97碰碰车公开视频| 午夜18禁试看120秒男女啪啪| 2017亚洲日韩天堂av| 顶级少妇做爰视频| 亚洲av无码专区在线电影| 成年男女免费视频网站不卡| 看成年女人午夜毛片免费| 日韩欧美亚洲综合久久| heyzo高无码专区人妻被手指| 国产高清情侣视频2019年| 欧美人与动牲交视频| 13小箩利洗澡无码视频网站| 久久爱在线看精品999| 久久ee热这里只有精品| 日本japanesexxxx日本熟| 校园h系列辣文| 日本真人做受视频试看| 妈妈的朋友在线播放| bl文库按住腰往上顶| 免费黄色网址| 国产高清在线精品一区不卡| 日av亚av欧av综合| 美女黄网站视频免费视频| 女邻居丰满的奶水在线观看| 久久久婷婷五月亚洲97色| 国产综合18久久久久久| http://www.daiichi-seiren.com