婴儿心脏有洞:C#问题,高手帮忙看看啊,输出结果“非数字”

来源:百度文库 编辑:神马品牌网 时间:2024/05/02 02:12:58
using System;
using System.Collections.Generic;
using System.Text;

namespace AgrModel
{
public class DayLength
{
public const double z = 90.83f;
public const double pd = Math.PI / 180;
//----------------------------------------------
public static double DL(double LT,double SL)
{
double dl=(48d/360)*Math.Acos(Math.Cos(z*pd)/(Math.Cos(LT)*Math.Cos(SL))-(Math.Tan(LT)*Math.Tan(SL)));
return dl;
}
//-----------------------------------------------
private static double SLL(DateTime dt)
{
int k=dt.DayOfYear;
return 23.5d*Math.Sin(6.2832d*(284+k)/365);
}
private static double SL(DateTime dt)
{
int d1,d2,dtCount;
DateTime dtStart=new DateTime(dt.Year, 3, 1);
DateTime dtEnd = new DateTime(dt.Year,12,31);
d1 = dtStart.DayOfYear;
d2 = dt.DayOfYear;
if (dt.Month >= 3)
{
dtCount = d2 - d1 + 1;
}
else
{

dtCount = dtEnd.DayOfYear - d1 + 1 + d2;
}
double Y = ((dtCount - 21) / 365d)* 2 * Math.PI;
double sl= 0.38092 - 0.76996 * Math.Cos(Y) + 23.265 * Math.Sin(Y)
+ 0.36958 * Math.Cos(2 * Y) + 0.10868 * Math.Sin(2 * Y)
+ 0.01834 * Math.Cos(3 * Y) - 0.1665 * Math.Sin(3 * Y)
- 0.00392 * Math.Cos(4 * Y) + 0.00072 * Math.Sin(4 * Y)
- 0.00051 * Math.Cos(5 * Y) + 0.0025 * Math.Sin(5 * Y)
+ 0.00442 * Math.Cos(6 * Y);
return sl;
}
public static void Main()
{
double lt=32.03*pd;
DateTime d=new DateTime(2006,6,21);
Console.WriteLine("{0}",DL(lt,SL(d)));
//Console.WriteLine(DL(lt,SLL(d)));
Console.ReadLine();
}
}
}

自己检查检查啊~~像除零啊,之类的问题就会出现非数字了