2016-08-18 52 views
-2

後的數字我想我的功能,只有2位小數返回值。我曾嘗試下面的代碼:只需要2小數點

private static double CalculateSlabTax(int nSlabStartTaxable, int nSlabEndTaxable, float fSlabRate) 
{ 
    double dblSlabResult = 0; 
    try 
    { 
     dblSlabResult = (nSlabStartTaxable - nSlabEndTaxable) * fSlabRate; 
     dblSlabResult = Math.Round(dblSlabResult , 2); 
     return dblSlabResult; 
    } 
    catch (Exception) 
    { 
     return -1; 
    } 
} 

預期成果是:dblSlabResult = ####.## - 兩位數字(例如,1002.05。)

獲取輸出:如。 dblSlabResult = 1002.1

+0

有可能你得到的數字是'1002.101'嗎?然後,四捨五入到兩位數,「1002.1」是預期的結果。你的計算方法是正確的。 –

+2

顯示輸入。這個try/catch也是沒有意義的。 – harold

+0

@harold輸入在方法參數中,並嘗試捕獲並非毫無意義 –

回答

0

很簡單。試試這個

public double UptoTwoDecimalPoints(double num) 
{ 
    var totalCost = Convert.ToDouble(String.Format("{0:0.00}", num)); 
    return totalCost; 
} 
0

#字符是一個可選的數字佔位符。使用0轉換爲字符串時,執行數字:

string.Format("{0:#.##}", 1002.1) == "1002.1" 
string.Format("{0:0.00}", 1002.1) == "1002.10" 

四捨五入floatdouble時,不要指望數字的具體數量。它們只是數字,與字符串格式無關。

0

您正在使用什麼輸入? Math.Round應該工作正常,這表明上面的行只返回一個有1位有效數字的double。

0

代表使用格式化。在你的情況下,精確到小數點後兩位數表示"F2"格式字符串

double source = 1234.56789; 
// 1234.57 
var result = source.ToString("F2"); 
相關問題