我正在尝试将我的值四舍五入,如果它大于或等于0.5
,则变为1
,否则变为0
。例如:
3.7 -> 4;
1.3 -> 1;
2.5 -> 3;
...
有任何想法吗?
我正在尝试将我的值四舍五入,如果它大于或等于0.5
,则变为1
,否则变为0
。例如:
3.7 -> 4;
1.3 -> 1;
2.5 -> 3;
...
Math.Round(3.7,MidpointRounding.AwayFromZero);
http://msdn.microsoft.com/zh-cn/library/system.midpointrounding.aspx
上述代码中使用了 AwayFromZero
进行舍入,因为默认的是银行家舍入,如果小数部分为 0.5,则会被舍入到最近的偶数。所以 3.5 舍入后变成 4(最近的偶数),但是 2.5 舍入后变成 2(最近的偶数)。因此,您可以像上面演示的那样选择不同的方法来将 3.5 舍入为 4,而将 2.5 舍入为 3。
public static void Main()
{
double d = 1.0;
d -= 0.3;
d -= 0.2;
Console.WriteLine("Standard formatting: {0}", d); // 0.5
Console.WriteLine("Internal Representation: {0:r}", d); // 0.49999999999999994
Console.WriteLine("Console WriteLine 0 decimals: {0:0}", d); // 1
Console.WriteLine("0 decimals Math.Round: {0}", Math.Round(d, MidpointRounding.AwayFromZero)); // 0
Console.WriteLine("15 decimals then 0 decimals Math.Round: {0}", Math.Round(Math.Round(d, 15, MidpointRounding.AwayFromZero), MidpointRounding.AwayFromZero)); // 1
}
总结
Math.Round(3.5, 0, MidpointRounding.AwayFromZero) -> 4
向下取整
Math.Round(3.5, 0, MidpointRounding.ToEven) -> 3