我正在尝试将一些值四舍五入作为以下示例,并且需要一些帮助来为其编写数学计算:
input -> 25 ÷ 4 = 6.25 output -> 6.5
input -> 15.5 ÷ 4 = 3.875 output -> 4.0
input -> 24.5 ÷ 4 = 6.125 output -> 6.0
知道如何编写圆形数学程序吗?
我正在尝试将一些值四舍五入作为以下示例,并且需要一些帮助来为其编写数学计算:
input -> 25 ÷ 4 = 6.25 output -> 6.5
input -> 15.5 ÷ 4 = 3.875 output -> 4.0
input -> 24.5 ÷ 4 = 6.125 output -> 6.0
知道如何编写圆形数学程序吗?
这应该这样做。
double Divide(double numerator, double denominator)
{
double result = numerator / denominator;
//round to nearest half-integer
result = Math.Round(result * 2, MidpointRounding.AwayFromZero) / 2;
// due to peculiarities of IEEE754 floating point arithmetic
// we need to round again after dividing back by two
// to avoid a result like 1.49999999.
return Math.Round(result, 1);
}
抱歉不知道您遇到的困难,所以我猜可能是不同类型的浮点数。下面的代码就是这样做的:
public static decimal RoundedDivide<T>(T a, T b) {
var x=2*Convert.ToDecimal(a)/Convert.ToDecimal(b);
x=((int)(.5m+x)>x?1:0)+(int)x;
return x/2;
}
有两点需要注意:
ValueType
,所以如果你传递引用类型的对象,它可能会抛出double
作为返回类型,则只需将其更改.5m
为.5
,Convert.ToDecimal
即可Convert.ToDouble