Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何舍入到一半值_C#_Rounding - Fatal编程技术网

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