2016-11-14 22 views
-2

下面的代碼有些作品,但沒有正確舍入,我的目標是如果一個值= 1.5舍入,如果1.51舍入。數學,樓層,天花板,小數什麼使用錯誤

感謝

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.5舍入,如果1.51舍入」你的代碼看起來並不像你想要做的那樣,但是沒有一個舍入選項可以做到這一點 - 你可以做' 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