只需要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
答
很简单。试试这个
public double UptoTwoDecimalPoints(double num)
{
var totalCost = Convert.ToDouble(String.Format("{0:0.00}", num));
return totalCost;
}
答
的#
字符是一个可选的数字占位符。使用0
转换为字符串时,执行数字:
string.Format("{0:#.##}", 1002.1) == "1002.1"
string.Format("{0:0.00}", 1002.1) == "1002.10"
四舍五入float
或double
时,不要指望数字的具体数量。它们只是数字,与字符串格式无关。
答
您正在使用什么输入? Math.Round应该工作正常,这表明上面的行只返回一个有1位有效数字的double。
答
要代表使用格式化。在你的情况下,精确到小数点后两位数表示"F2"
格式字符串
double source = 1234.56789;
// 1234.57
var result = source.ToString("F2");
有可能你得到的数字是'1002.101'吗?然后,四舍五入到两位数,“1002.1”是预期的结果。你的计算方法是正确的。 –
显示输入。这个try/catch也是没有意义的。 – harold
@harold输入在方法参数中,并尝试捕获并非毫无意义 –