Math,Floor,Ceiling, decimal What to use 错误
Math,Floor,Ceiling, decimal What to use error
下面的代码有些工作但没有正确四舍五入,我的目标是如果值 = 1.5 向下舍入,如果 1.51 向上舍入。
谢谢
if (!String.IsNullOrEmpty(tbSnp_Uld.Text) && !string.IsNullOrEmpty(cbSnp_Uld.Text))
{
double d_tbSnp_Uld = Convert.ToDouble(tbSnp_Uld.Text);
double d_cbSnp_Uld = Convert.ToDouble(cbSnp_Uld.Text);
double result1 = Math.Ceiling(d_tbSnp_Uld / d_cbSnp_Uld);
double d = 0;
int floored = (int)Math.Floor(d);
int ceiled = (int)Math.Ceiling(d);
double epsilon = 0;
int lessThan = floored - Convert.ToInt32(Math.Abs(d - floored) < epsilon);
int moreThan = ceiled + Convert.ToInt32(Math.Abs(d - ceiled) < epsilon);
tbTrailer_Needed.Text = result1.ToString();
}
这里是您尝试完成的原始示例。使用 TDD 方法编写此代码:添加测试 -> 使其通过。
所以请随意重构它
public static int CustomRound(double value)
{
int sign = Math.Sign(value);
double absValue = Math.Abs(value);
int absResult = (int)Math.Round(absValue - 0.01, 0, MidpointRounding.AwayFromZero);
return absResult * sign;
}
下面的代码有些工作但没有正确四舍五入,我的目标是如果值 = 1.5 向下舍入,如果 1.51 向上舍入。
谢谢
if (!String.IsNullOrEmpty(tbSnp_Uld.Text) && !string.IsNullOrEmpty(cbSnp_Uld.Text))
{
double d_tbSnp_Uld = Convert.ToDouble(tbSnp_Uld.Text);
double d_cbSnp_Uld = Convert.ToDouble(cbSnp_Uld.Text);
double result1 = Math.Ceiling(d_tbSnp_Uld / d_cbSnp_Uld);
double d = 0;
int floored = (int)Math.Floor(d);
int ceiled = (int)Math.Ceiling(d);
double epsilon = 0;
int lessThan = floored - Convert.ToInt32(Math.Abs(d - floored) < epsilon);
int moreThan = ceiled + Convert.ToInt32(Math.Abs(d - ceiled) < epsilon);
tbTrailer_Needed.Text = result1.ToString();
}
这里是您尝试完成的原始示例。使用 TDD 方法编写此代码:添加测试 -> 使其通过。
所以请随意重构它
public static int CustomRound(double value)
{
int sign = Math.Sign(value);
double absValue = Math.Abs(value);
int absResult = (int)Math.Round(absValue - 0.01, 0, MidpointRounding.AwayFromZero);
return absResult * sign;
}