2016-11-10 5 views
1

を予測する私は、下記の式を使用してC#で潮を予測しようとしています:タイムスパンArithematicsは潮

enter image description here

プログラムがすでにC#のにそれを変換するときしかし、私はいくつかの問題に遭遇しています、Excelで行われていました。


これはExcelの式である:

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

セルC18及びC19はちょうど私がトラブルAを見つけることを有しています2つの日付のセルC#の各


の減算を含みます
Aを見つけるのに2つの問題があります。
問題1:私が(t - t1)/(t2 - t1)を実行すると、C#の答えは0ですが、答えは1です。
問題2:式の最後に+1。どのように(彼らはdatetime値としてそれを解析多分ので、Excelでこの作品、?)のtimeSpanに番号を追加する


ここに私のコードは次のとおりです。

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、Excelでそれだけで1
注意されながら:式が tide prediction pdf

ここから取られています

注:(t - t1)(t2 - t1)は、両方ともC#とExcelの両方でまったく同じ回答を持っています。だから分裂の答えの違いは?

+0

問題2、Addメソッドを使用してTimeSpanに追加できます。あなたが望む期間の新しいタイムパンを作成して、この方法で追加することができます。 –

+0

問題1、私はあなたが整数であるティックを分割しているので、整数で分数結果を得ることができないので、0を得るだろうと思います。 –

+0

ありがとう、問題1はニヨコの謝罪から解決されました。今私は問題2への解決策が必要です –

答えて

2

提供PDFからあなたの代わりに

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ある.TotalHoursを必要とするので、tt1t2は、進時間であります。

+0

それはまだ同じです、00:00:00は答えです。 –

+0

't_minus_t1/t2_minus_t1'は' double'です。どのように '00:00:00'を得ることができますか? –

+0

はMessageBox部分を見逃しました。 1を追加する方法も教えてください。私はこれを正しいものとしてマークすることができます –

関連する問題