Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 小数点后仅需2位数字_C#_Format - Fatal编程技术网

C# 小数点后仅需2位数字

C# 小数点后仅需2位数字,c#,format,C#,Format,我希望我的函数只返回小数点后两位的值。我尝试了以下代码: private static double CalculateSlabTax(int nSlabStartTaxable, int nSlabEndTaxable, float fSlabRate) { double dblSlabResult = 0; try

我希望我的函数只返回小数点后两位的值。我尝试了以下代码:

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
在转换为字符串时强制使用数字:

string.Format("{0:#.##}", 1002.1) == "1002.1"
string.Format("{0:0.00}", 1002.1) == "1002.10"
当四舍五入
float
double
时,不要期望特定的位数计数。它们只是数字,与字符串格式无关。

字符是可选的数字占位符。使用
0
在转换为字符串时强制使用数字:

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

当四舍五入
float
double
时,不要期望特定的位数计数。它们只是数字,与字符串格式无关。

您使用的是什么输入?Math.Round应该工作正常,这表明上面的行返回的是一个只有1个有效数字的double。

您使用的是什么输入?Math.Round应该工作正常,这表明上面的行返回的是一个只有1个有效数字的double。

表示使用格式。在您的情况下,小数点后正好有两位数字表示
“F2”
格式字符串

 double source = 1234.56789;
 // 1234.57
 var result = source.ToString("F2");  
要表示,请使用格式。在您的情况下,小数点后正好有两位数字表示
“F2”
格式字符串

 double source = 1234.56789;
 // 1234.57
 var result = source.ToString("F2");  
很简单。试试这个

public double UptoTwoDecimalPoints(double num)
{
    var totalCost = Convert.ToDouble(String.Format("{0:0.00}", num));
    return totalCost;
}
很简单。试试这个

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

您得到的号码是否可能类似于
1002.101
?然后,四舍五入到两位数,
1002.1
是预期结果。您的计算方法正确。显示输入。还有,try/catch是没有意义的。@harold输入在方法参数中,而try-catch不是pointless@DhirajSardal但具体是什么呢。毕竟你只得到了2个数字,1也是“仅2”的一种形式。try/catch只捕获了指定给
Math.Round
的错误数字,这是永远不会发生的。我认为@Harold所说的“显示输入”的意思是显示您实际传入的一些示例值。您得到的数字可能类似于
1002.101
?然后,四舍五入到两位数,
1002.1
是预期结果。您的计算方法正确。显示输入。还有,try/catch是没有意义的。@harold输入在方法参数中,而try-catch不是pointless@DhirajSardal但具体是什么呢。毕竟你只得到了2个数字,1也是“仅2”的一种形式。try/catch只捕获了指定给
Math.Round
的错误位数,这是永远不会发生的。我认为@Harold所说的“显示输入”的意思是显示您实际传入的一些示例值。