我已经在系统上工作了一段时间,客户端一直在测试它。他们希望系统现在向上舍入保持两位小数。有人可以提供帮助,因为我似乎遇到Math.Ceiling
问题并将数字转换为十进制数。我的代码如下。
第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 :(得分:0)
这不是吗?
public static float RoundUp(float number, int decimalPlaces)
{
var scale = Math.Pow(10, decimalPlaces);
return (float)(Math.Ceiling(number * scale) / scale);
}
需要考虑的事项:
Math.Round
不这样做。Convert
,只需投射。decimal
,您在转换回float
时将其丢弃;使用隐式转换为double
,只有在需要时才转回float
。