Math.Round()
将始终根据数学规则返回结果。
例如 0.124 将四舍五入为 0.12 ,如果为 2位小数完成。
我可以让它总是给我下一个更高的值,例如 0.124 舍入到2位小数应该给 0.13 同样吗?
答案 0 :(得分:1)
您可以使用Baszz提到的Math.Ceiling。您需要乘以并除以某个因子来模拟舍入行为:
var decimals = 2;
var fac = Math.Pow(10, decimals);
var result = ((int)Math.Ceiling(0.124 * fac)) / fac;
Console.WriteLine(result);
答案 1 :(得分:1)
试试这个:
var input = 0.124;
var decimals = 2;
var r = (input == Math.Round(input, decimals)) ?
Math.Round(input, decimals) :
Math.Round(input + Math.Pow(10, -decimals), decimals);
您可以创建一个扩展方法:
public static double RoundUp(this double input, int decimals)
{
return (input == Math.Round(input, decimals)) ?
Math.Round(input, decimals) :
Math.Round(input + Math.Pow(10, -decimals), decimals);
}
并使用它:
double input = 0.1224;
var decimals = 3;
var r = input.RoundUp(decimals);
答案 2 :(得分:0)
我认为你应该看一下Math.Ceiling()
方法:
http://msdn.microsoft.com/en-us/library/zx4t0t48(v=vs.110).aspx
请看SO上的这篇文章,解释如何使用它:
答案 3 :(得分:0)
为此,您尝试使用math.ceiling()而不是使用math.round()..!
Math.Round() --> Rounding values
Math.Ceiling() --> Next higher value
Math.Floor() --> Next lower value
答案 4 :(得分:0)
在这里,举例说明Math.Ceiling()概念
using System;
class Program
{
static void Main()
{
// Get ceiling of double value.
double value1 = 123.456;
double ceiling1 = Math.Ceiling(value1);
// Get ceiling of decimal value.
decimal value2 = 456.789M;
decimal ceiling2 = Math.Ceiling(value2);
// Get ceiling of negative value.
double value3 = -100.5;
double ceiling3 = Math.Ceiling(value3);
// Write values.
Console.WriteLine(value1);
Console.WriteLine(ceiling1);
Console.WriteLine(value2);
Console.WriteLine(ceiling2);
Console.WriteLine(value3);
Console.WriteLine(ceiling3);
}
}
Output
******
123.456
124
456.789
457
-100.5
-100