Timespan Arithematics预测潮stream

我试图用下面的公式来预测c#中的潮stream:

在这里输入图像说明

该程序已经在Excel中完成,但是当它转换为C#时,我遇到了一些问题。


这是excel中的公式:

=PI()*((C18)/(C19)+1)

单元格C18和C19只包含两个date单元格的减法


在C#中,我很难findA.
find答案有2个问题区域
问题1:当我做(t - t1)/(t2 - t1)在C#中的答案是0,但在Excel中答案是1。
问题2:方程末尾的+1。 你如何添加一个数字timeSpan(在Excel中这个工作,也许是因为他们parsing为date时间值?)


这是我的代码:

 DateTime t = new DateTime(2016, 6, 21, 13, 41, 00); DateTime t1 = new DateTime(2016, 6, 21, 7, 13, 00); DateTime t2 = new DateTime(2016, 6, 21, 13, 57, 00); double h1 = 1.421; double h2 = 2.337; double h2_minus_h1 = h2 - h1; TimeSpan t_minus_t1 = TimeSpan.FromTicks(t.Subtract(t1).Ticks); TimeSpan t2_minus_t1 = TimeSpan.FromTicks(t2.Subtract(t1).Ticks); TimeSpan MainCalculationForA = TimeSpan.FromTicks((t.Subtract(t1).Ticks) / (t2.Subtract(t1).Ticks)); MessageBox.Show(MainCalculationForA.ToString()); 

答案是(t - t1)/(t2 - t1)是: 00:00:00 : 00:00:00 : 00:00:00 ,而在excel中只有1
注:公式是从这里潮汐预测pdf

注意: (t - t1)(t2 - t1)在C#和excel中都有完全相同的答案。 那么为什么在分裂的答案差异?

从提供的PDF中, tt1t2十进制小时 ,所以您需要.TotalHours代替

 DateTime t = new DateTime(2016, 6, 21, 13, 41, 00); DateTime t1 = new DateTime(2016, 6, 21, 7, 13, 00); DateTime t2 = new DateTime(2016, 6, 21, 13, 57, 00); double h1 = 1.421; double h2 = 2.337; double t_min_t1 = (t - t1).TotalHours; double t2_min_t1 = (t2 - t1).TotalHours; double A = Math.PI*(t_min_t1/t2_min_t1 + 1); double h = h1 + (h2 - h1)*((Math.Cos(A) + 1)/2); MessageBox.Show(h.ToString()); 

最终结果是2.33345960154238