我希望我的函数返回值只有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 :(得分:1)
代表使用格式。在您的情况下,小数点后面的正好两位数表示"F2"
格式字符串
double source = 1234.56789;
// 1234.57
var result = source.ToString("F2");
答案 1 :(得分:0)
#
字符是可选的数字占位符。转换为字符串时使用0
强制执行数字:
string.Format("{0:#.##}", 1002.1) == "1002.1"
string.Format("{0:0.00}", 1002.1) == "1002.10"
在舍入float
或double
时,不要指望具体的数字位数。它们只是数字,与字符串格式无关。
答案 2 :(得分:0)
您使用了哪些输入? Math.Round应该正常工作,这表明上面的行返回一个只有1个有效数字的双精度。
答案 3 :(得分:0)
很简单。试试这个
public double UptoTwoDecimalPoints(double num)
{
var totalCost = Convert.ToDouble(String.Format("{0:0.00}", num));
return totalCost;
}