2016-09-09 56 views
0

我一直在系统上工作了一段时间,客户端一直在测试它。他们希望系统现在四舍五入保留两位小数。有人可以帮助,因为我似乎遇到了Math.Ceiling的麻烦,并将数字转换为十进制。我的代码如下。转换为十进制并舍入保留2位小数

第2行是需要进行更改的位置,并且数字需要四舍五入以保留2位小数。

float fcharge = Convert.ToSingle(dr["total_charge_weight"]) * Convert.ToSingle(dr["H_unit_rate"]); 
decimal dcharge = Math.Round(Convert.ToDecimal(fcharge), 2); 
float charge = Convert.ToSingle(dcharge); 
+0

你能提供一个输入和期望输出数据的例子吗? – fubo

+0

你的代码有什么问题? – user3185569

+0

@fubo输入将是123.877预期输出123.90 –

回答

0

不会这样吗?

public static float RoundUp(float number, int decimalPlaces) 
{ 
    var scale = Math.Pow(10, decimalPlaces); 
    return (float)(Math.Ceiling(number * scale)/scale); 
} 

需要考虑的事情:

  1. 。你需要roud Math.Round不这样做。
  2. 没有必要使用Convert,只需施放。
  3. 有没有必要转换为decimal,当转换回float;如果需要,则使用隐式转换为double,并且只能转回float