如何将值四舍五入到最接近的整数?
例如:
1.1 => 1
1.5 => 2
1.9 => 2
“ Math.Ceiling()”对我没有帮助。有任何想法吗?
如何将值四舍五入到最接近的整数?
例如:
1.1 => 1
1.5 => 2
1.9 => 2
“ Math.Ceiling()”对我没有帮助。有任何想法吗?
Answers:
有关更多信息,请参见官方文档。例如:
基本上,给该Math.Round
方法三个参数。
样例代码:
var roundedA = Math.Round(1.1, 0); // Output: 1
var roundedB = Math.Round(1.5, 0, MidpointRounding.AwayFromZero); // Output: 2
var roundedC = Math.Round(1.9, 0); // Output: 2
var roundedD = Math.Round(2.5, 0); // Output: 2
var roundedE = Math.Round(2.5, 0, MidpointRounding.AwayFromZero); // Output: 3
var roundedF = Math.Round(3.49, 0, MidpointRounding.AwayFromZero); // Output: 3
如果需要MidpointRounding.AwayFromZero
四舍五入一个.5值,则需要。不幸的是,这不是的默认行为Math.Round()
。如果使用MidpointRounding.ToEven
(默认)值,则将其舍入为最接近的偶数(1.5
舍入为2
,但2.5
也舍入为2
)。
away from zero
也意味着-1.5
将舍入为-2
。
你需要Math.Round
,没有Math.Ceiling
。Ceiling
总是“向上舍入”,而Round
根据小数点后的值向上或向下舍入。
有这本手册,也有点可爱:
double d1 = 1.1;
double d2 = 1.5;
double d3 = 1.9;
int i1 = (int)(d1 + 0.5);
int i2 = (int)(d2 + 0.5);
int i3 = (int)(d3 + 0.5);
只需在任何数字上加上0.5,然后将其转换为int(或将其底数),就可以在数学上正确舍入:D
您拥有的Math.Round函数可以完全满足您的要求。
Math.Round(1.1) results with 1
Math.Round(1.8) will result with 2.... and so one.
1.5
是价值?您需要更多参数。
我一直在寻找,但我的示例是采用一个数字,例如4.2769,并将其范围降为4.3。不完全相同,但是如果这样做有帮助:
Model.Statistics.AverageReview <= it's just a double from the model
然后:
@Model.Statistics.AverageReview.ToString("n1") <=gives me 4.3
@Model.Statistics.AverageReview.ToString("n2") <=gives me 4.28
等等...
用途Math.Round
:
double roundedValue = Math.Round(value, 0)
var roundedVal = Math.Round(2.5, 0);
它会给出结果:
var roundedVal = 3
如果您使用整数而不是浮点数,则采用这种方法。
#define ROUNDED_FRACTION(numr,denr) ((numr/denr)+(((numr%denr)<(denr/2))?0:1))
这里的“ numr”和“ denr”都是无符号整数。
使用Math.Round(number)
四舍五入到最接近的整数。