2016-08-18 35 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"); 
相关问题