fork download
  1. using System;
  2. using static System.Console;
  3. using static System.Math;
  4.  
  5. public class Program {
  6. public static void Main() {
  7. WriteLine("Decimal");
  8. for (var valor = -1M; valor <= 1M; valor += 0.05M) WriteLine("{0:N1} => {1:N1}", valor, valor.RoundMidPoint());
  9. WriteLine("Double");
  10. for (var valor = -1.0; valor <= 1.0; valor += 0.05) WriteLine("{0:N1} => {1:N1}", valor, valor.RoundMidPoint());
  11. }
  12. }
  13.  
  14. public static class RoundUtil {
  15. public static Decimal RoundMidPoint(this Decimal value) => Sign(value) * Ceiling(Abs(value) * 2) / 2;
  16.  
  17. public static double RoundMidPoint(this double value) => Sign(value) * Ceiling(Abs(value) * 2) / 2;
  18. }
  19.  
  20. //http://pt.stackoverflow.com/q/16185/101
Success #stdin #stdout 0.02s 16712KB
stdin
Standard input is empty
stdout
Decimal
-1.0 => -1.0
-1.0 => -1.0
-0.9 => -1.0
-0.9 => -1.0
-0.8 => -1.0
-0.8 => -1.0
-0.7 => -1.0
-0.7 => -1.0
-0.6 => -1.0
-0.6 => -1.0
-0.5 => -0.5
-0.5 => -0.5
-0.4 => -0.5
-0.4 => -0.5
-0.3 => -0.5
-0.3 => -0.5
-0.2 => -0.5
-0.2 => -0.5
-0.1 => -0.5
-0.1 => -0.5
0.0 => 0.0
0.1 => 0.5
0.1 => 0.5
0.2 => 0.5
0.2 => 0.5
0.3 => 0.5
0.3 => 0.5
0.4 => 0.5
0.4 => 0.5
0.5 => 0.5
0.5 => 0.5
0.6 => 1.0
0.6 => 1.0
0.7 => 1.0
0.7 => 1.0
0.8 => 1.0
0.8 => 1.0
0.9 => 1.0
0.9 => 1.0
1.0 => 1.0
1.0 => 1.0
Double
-1.0 => -1.0
-1.0 => -1.0
-0.9 => -1.0
-0.9 => -1.0
-0.8 => -1.0
-0.8 => -1.0
-0.7 => -1.0
-0.7 => -1.0
-0.6 => -1.0
-0.6 => -1.0
-0.5 => -0.5
-0.5 => -0.5
-0.4 => -0.5
-0.4 => -0.5
-0.3 => -0.5
-0.3 => -0.5
-0.2 => -0.5
-0.2 => -0.5
-0.1 => -0.5
0.0 => -0.5
0.0 => 0.5
0.1 => 0.5
0.1 => 0.5
0.2 => 0.5
0.2 => 0.5
0.3 => 0.5
0.3 => 0.5
0.4 => 0.5
0.4 => 0.5
0.5 => 0.5
0.5 => 1.0
0.6 => 1.0
0.6 => 1.0
0.7 => 1.0
0.7 => 1.0
0.8 => 1.0
0.8 => 1.0
0.9 => 1.0
0.9 => 1.0
1.0 => 1.0