[C#]負數的無條件進位

[C#]負數的無條件進位

正數的無條件進位 大家都會算,有天突然接到一個需求,負數 要做無條件進位

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();        

        }

    }

}

 


如有錯誤 歡迎指正