mx求助计算日期函数
查看原帖
mx求助计算日期函数
86896
rmxlinux楼主2022/8/14 11:03

这个函数的功能是计算yy年(大于1582年)开始增加dd天的增长年份,并把剩余天数保存在全局变量klkl中。但是我发现这个函数计算出的klkl不稳定,和正确答案有小范围误差,求大佬看看我哪里写错了

int kl = 0 ;

//cday(y)计算y年的天数,保证正确
//1461是一个闰年周期的天数

int cntyear(int y, int d) {
	cout << y << " + " << d << " day = ";
	if(d < cday(y)) return 0 ;
	if(d < 1461) {
		int tmpd = d ;
		for(int i = 0; i < (tmpd / 365); i++)
			if(cday(y + i) == 366) d-- ;
		return d / 365 ;
	}
	int ans = d / 1461 * 4 ;
	if(ans >= 100) d += ans / 100 ;
	d -= (ans / 400) ;
	d -= 1461 * (d / 1461) ;
	//ans += cntyear(y + ans, d) ;
	int tmpd = d ;
	for(int i = 0; i < (tmpd / 365); i++)
		if(cday(y + ans + i) == 366) d-- ;
	ans += d / 365 ;
	d -= (d / 365) * 365 ;
	kl = d ;
	cout << ans << "----left " << d << " day ----" << endl ;
	return ans ;
}
2022/8/14 11:03
加载中...