C# 如何舍入到一半值
我正试着像下面这样绕过去C# 如何舍入到一半值,c#,rounding,C#,Rounding,我正试着像下面这样绕过去 1.1 -> 1 1.2 -> 1 . 1.4 -> 1 1.5 -> 1.5 1.6 -> 1.5 . . 1.9 -> 1.5 2 -> 2 我怎样才能做到这一点?我尝试了数学.Round(value),数学.Round(value,1),数学.Round(value,middpointrounding.AwayFromZero)似乎没有达到我的要求。非常感谢您的帮助您可以尝试: decimal HalfRound(dec
1.1 -> 1
1.2 -> 1
.
1.4 -> 1
1.5 -> 1.5
1.6 -> 1.5
.
.
1.9 -> 1.5
2 -> 2
我怎样才能做到这一点?我尝试了数学.Round(value),数学.Round(value,1),数学.Round(value,middpointrounding.AwayFromZero)似乎没有达到我的要求。非常感谢您的帮助您可以尝试:
decimal HalfRound(decimal value)
{
var floor = Math.Floor(value);
return floor += (value - floor) < 0.5M ? 0.0M : 0.5M;
}
结果:
//1.1 => 1.0
//1.2 => 1.0
//1.4 => 1.0
//1.5 => 1.5
//1.6 => 1.5
//1.9 => 1.5
//2.0 => 2.0
//3.5 => 3.5
//3.6 => 3.5
//3.9 => 3.5
尝试
Math.Floor(value*2)/2
@maccettura该问题稍有不同,因为它将1.3和1.4四舍五入到1.5,但这里OP希望这些四舍五入到1。尝试添加0.5,四舍五入到整数,然后减去0.5。
//1.1 => 1.0
//1.2 => 1.0
//1.4 => 1.0
//1.5 => 1.5
//1.6 => 1.5
//1.9 => 1.5
//2.0 => 2.0
//3.5 => 3.5
//3.6 => 3.5
//3.9 => 3.5