3

値を丸めて、0.5それ以上の場合1は、、それ以外の場合は。になるようにしようとしています0。例えば:

3.7 -> 4;
1.3 -> 1;
2.5 -> 3;
...

何か案は?

4

4 に答える 4

7
Math.Round(3.7,MidpointRounding.AwayFromZero);

http://msdn.microsoft.com/en-us/library/system.midpointrounding.aspx

上記ではAwayFromZero、デフォルトがBankerの丸めであるため、丸めに使用しました。したがって、端数が0.5の場合、最も近い偶数に丸められます。したがって、3.5は4(最も近い偶数)になりますが、2.5は2(最も近い偶数)になります。したがって、上記のように別の方法を選択して、3.5から4および2.5から3にします。

于 2011-10-23T04:50:03.613 に答える
3

最も簡単な方法は、入力に0.5を追加してから、intにキャストすることです。

于 2011-10-23T04:51:23.743 に答える
2

最後に到着したので、別のことをお話しします。0.5使用し1ないことで丸めますdouble!を使用decimalします。double「正確な」数字を持つのは良くありません。

このコードを起動して楽しんでください(0.49999999999999994のような数値にモノラルの「バグ」がある/あったことに注意してください。したがって、ideoneで実行するには、1.5を丸めるために少し変更する必要がありました:http:// ideone .com / 57XAYV

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
}
于 2011-10-23T06:32:48.673 に答える
0

切り上げする

Math.Round(3.5, 0, MidpointRounding.AwayFromZero) -> 4

切り捨て

Math.Round(3.5, 0, MidpointRounding.ToEven) -> 3
于 2020-07-13T10:06:39.903 に答える