2016-11-14 7 views
-2

以下のコードは正しく動作しますが、正しく丸められません。目標は1.5です。数学、床、天井、小数使用するエラー

ここおかげ

if (!String.IsNullOrEmpty(tbSnp_Uld.Text) && !string.IsNullOrEmpty(cbSnp_Uld.Text)) 
{ 
    double d_tbSnp_Uld = Convert.ToDouble(tbSnp_Uld.Text); 
    double d_cbSnp_Uld = Convert.ToDouble(cbSnp_Uld.Text); 
    double result1 = Math.Ceiling(d_tbSnp_Uld/d_cbSnp_Uld); 
    double d = 0; 
    int floored = (int)Math.Floor(d); 
    int ceiled = (int)Math.Ceiling(d); 
    double epsilon = 0; 
    int lessThan = floored - Convert.ToInt32(Math.Abs(d - floored) < epsilon); 
    int moreThan = ceiled + Convert.ToInt32(Math.Abs(d - ceiled) < epsilon); 
    tbTrailer_Needed.Text = result1.ToString(); 
} 
+0

エラーが何をリファクタリングすること自由に感じ
? –

+2

あなたは何を求めていますか?これのタイトルは、実際の質問ではなく、言葉のリストのようです。 –

+0

"私の目標は、1.51ラウンドの場合、値が1.5ラウンドダウンの場合です。"あなたのコードは、あなたのやりたいことのようには見えませんが、それを行う丸めオプションはありません。あなたが負の数で何をしたいかによって、Math.Ceiling(x - 0.5) –

答えて

0

あなたが達成しようとするものの生のサンプル。 TDD apporachを使ってこれを書いた:テストを追加する - >合格させる。 は、だから

public static int CustomRound(double value) 
{ 
    int sign = Math.Sign(value); 
    double absValue = Math.Abs(value); 
    int absResult = (int)Math.Round(absValue - 0.01, 0, MidpointRounding.AwayFromZero); 
    return absResult * sign; 
} 
+0

誰もが助けてくれてありがとう – Booney440

関連する問題