我想将数字四舍五入到最近10
的位置。例如,像这样的数字17.3
被四舍五入为20.0
。并希望允许三位有效数字。作为过程的最后一步,四舍五入到最接近的十分之一的含义。
样品:
the number is 17.3 ,i want round to 20 ,
and this number is 13.3 , i want round to 10 ?
我怎样才能做到这一点 ?
Chris Charabaruk在这里给你想要的答案
为了深入了解,这是他作为扩展方法的解决方案:
public static class ExtensionMethods
{
public static int RoundOff (this int i)
{
return ((int)Math.Round(i / 10.0)) * 10;
}
}
int roundedNumber = 236.RoundOff(); // returns 240
int roundedNumber2 = 11.RoundOff(); // returns 10
//edit: 此方法仅适用于 int 值。您必须根据自己的喜好编辑此方法。fe:公共静态类 ExtensionMethods
{
public static double RoundOff (this double i)
{
return (Math.Round(i / 10.0)) * 10;
}
}
/edit2:正如 corak 所说,您应该/可以使用
Math.Round(value / 10, MidpointRounding.AwayFromZero) * 10
其他答案也是正确的,但这里是你如何做到这一点Math.Round
:
((int)((17.3 + 5) / 10)) * 10 // = 20
((int)((13.3 + 5) / 10)) * 10 // = 10
((int)((15.0 + 5) / 10)) * 10 // = 20
double Num = 16.6;
int intRoundNum = (Convert.ToInt32(Math.Round(Num / 10)) * 10);
Console.WriteLine(intRoundNum);
尝试这个-
double d1 = 17.3;
int rounded1 = ((int)Math.Round(d/10.0)) * 10; // Output is 20
double d2 = 13.3;
int rounded2 = ((int)Math.Round(d/10.0)) * 10; // Output is 10
如果您想避免强制转换或拉入数学库,您还可以使用模运算符并执行以下操作:
int result = number - (number % 10);
if (number % 10 >= 5)
{
result += 10;
}
对于您给定的数字:
数字 | 加工 | 结果 |
---|---|---|
13.3 | 13.3 - (3.3) | 10 |
17.3 | 17.3 - (7.3) + 10 | 20 |