iT邦幫忙

DAY 29
2

C#技術分享系列 第 29

C#技術分享29-負數的無條件進位

  • 分享至 

  • xImage
  •  

正數的無條件進位 大家都會算,有天突然接到一個需求,負數 要做無條件進位
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();        

        }

    }

}

上一篇
C#技術分享28-String.Concat 方法
下一篇
C#技術分享30-計算日期過了幾天
系列文
C#技術分享30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言