正數的無條件進位 大家都會算,有天突然接到一個需求,負數 要做無條件進位
1.4 的無條件進位是2
那-1.4的無條件進位是 -2 還是-1呢,
我原本也覺得是-1,但發需求的人跟我說應該是-2
陸續問了幾個人,有的人覺得是-2 也有人覺得是-1
所以就先用C#的四捨五入 來看看電腦算多來是多少,就以電腦的為準
Console.WriteLine(Math .Round(-1.4, MidpointRounding.AwayFromZero)); //-1.4 -> –1
電腦算出來是-1.4
無條件進位的方法,我使用Math.Ceiling (Decimal) ,傳回大於或等於指定十進位數字的最小整數。
因為他會傳回比原本大的值,所以在負數 就會傳回比原本小的值
因為直接用Console.WriteLine(Math .Round(-1.4, MidpointRounding.AwayFromZero)); //-1.4 -> –1 是不對的
所以我就要判斷 如果是負數 就先用math.abs取絕對值,然後再*-1,這樣答案就會是正確的了
Console.WriteLine(Math .Ceiling(Math.Abs(-1.4)) * -1);
以下為範例code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
//負的四捨五入
Console.WriteLine(Math .Round(-1.4, MidpointRounding.AwayFromZero)); //-1.4 -> -1
Console.WriteLine(Math .Round(-1.5, MidpointRounding.AwayFromZero)); //-1.5 -> -2
//無條件進位
Console.WriteLine(Math .Ceiling(1.4)); //1.4 -> 2
Console.WriteLine(Math .Ceiling(-1.4)); //-1.4 -> -1
Console.WriteLine(Math .Ceiling(Math.Abs(-1.4)) * -1);
Console.Read();
}
}
}