C#中的取整函数

2019-11-13 来源: 黑光夜中明 发布在  https://www.cnblogs.com/hgyzm/p/11847058.html

先放百度的

Math.Ceiling();向上取整

Math.Ceiling()向上取整; d = 4.56789 string res = Math.Ceiling(Convert.ToDecimal(d)).ToString(); res=5
Math.Floor()向下取整 ;string res = Math.Floor(Convert.ToDouble(d)).ToString(); es=4
Math.Round是"就近舍入",当要舍入的是5时与"四舍五入"不同(取偶数),如:
Math.Round(0.5,0)=0 

floor 和 ceiling是math unit 里的函数,使用前要先 Uses Math。
trunc 和 round 是system unit 里的函数,缺省就可以用。
floor 直接往小的取,比如 floor(-123.55)=-124,floor(123.55)=123
trunc 直接切下整数,比如 trunc(-123.55)=-123, floor(123.55)=123
ceil 直接往大的取,比如 ceil(-123.55)=-123, ceil(123.55)=124
round 计算四舍五入,比如 round(-123.55)=-124,round(123.55)=124

  百度知道https://zhidao.baidu.com/question/91857578.html

看了之后由于和其他的网页内容有个别地方好像不符,决定自己实验

实验结果,其他几个没找到函数

从表中可以看出int向0取整,或者说是提取整数部分

Ceiling 向正无穷方向取整

Floor 向负无穷方向取整

Round四舍六入,对于5采取奇进偶不进(朝正无穷方向)

如果有人会使用其他函数或者有什么意见,欢迎留言

为了方便大家测试,留下测试代码

double n;
            n = 3.4;
            Console.WriteLine($"测试数据为:{n}");
            Console.WriteLine($"Math.Ceiling结果为:{Math.Ceiling(n)}");
            Console.WriteLine($"Math.Floor结果为:{Math.Floor(n)}");
            Console.WriteLine($"Math.Round结果为:{Math.Round(n)}");
            Console.WriteLine($"强制int结果为:{(int)n}");
            //Console.WriteLine($"trunc:{Math.(n)}")
            n = 3.6;
            Console.WriteLine($"测试数据为:{n}");
            Console.WriteLine($"Math.Ceiling结果为:{Math.Ceiling(n)}");
            Console.WriteLine($"Math.Floor结果为:{Math.Floor(n)}");
            Console.WriteLine($"Math.Round结果为:{Math.Round(n)}");
            Console.WriteLine($"强制int结果为:{(int)n}");

            n = 3.5;
            Console.WriteLine($"测试数据为:{n}");
            Console.WriteLine($"Math.Ceiling结果为:{Math.Ceiling(n)}");
            Console.WriteLine($"Math.Floor结果为:{Math.Floor(n)}");
            Console.WriteLine($"Math.Round结果为:{Math.Round(n)}");
            Console.WriteLine($"强制int结果为:{(int)n}");

            n = 4.5;
            Console.WriteLine($"测试数据为:{n}");
            Console.WriteLine($"Math.Ceiling结果为:{Math.Ceiling(n)}");
            Console.WriteLine($"Math.Floor结果为:{Math.Floor(n)}");
            Console.WriteLine($"Math.Round结果为:{Math.Round(n)}");
            Console.WriteLine($"强制int结果为:{(int)n}");

            n = -3.4;
            Console.WriteLine($"测试数据为:{n}");
            Console.WriteLine($"Math.Ceiling结果为:{Math.Ceiling(n)}");
            Console.WriteLine($"Math.Floor结果为:{Math.Floor(n)}");
            Console.WriteLine($"Math.Round结果为:{Math.Round(n)}");
            Console.WriteLine($"强制int结果为:{(int)n}");

            n = -3.6;
            Console.WriteLine($"测试数据为:{n}");
            Console.WriteLine($"Math.Ceiling结果为:{Math.Ceiling(n)}");
            Console.WriteLine($"Math.Floor结果为:{Math.Floor(n)}");
            Console.WriteLine($"Math.Round结果为:{Math.Round(n)}");
            Console.WriteLine($"强制int结果为:{(int)n}");

            n = -3.5;
            Console.WriteLine($"测试数据为:{n}");
            Console.WriteLine($"Math.Ceiling结果为:{Math.Ceiling(n)}");
            Console.WriteLine($"Math.Floor结果为:{Math.Floor(n)}");
            Console.WriteLine($"Math.Round结果为:{Math.Round(n)}");
            Console.WriteLine($"强制int结果为:{(int)n}");

            n = -4.5;
            Console.WriteLine($"测试数据为:{n}");
            Console.WriteLine($"Math.Ceiling结果为:{Math.Ceiling(n)}");
            Console.WriteLine($"Math.Floor结果为:{Math.Floor(n)}");
            Console.WriteLine($"Math.Round结果为:{Math.Round(n)}");
            Console.WriteLine($"强制int结果为:{(int)n}");

            Console.ReadKey();

当然大家也可以枚举值,然后使用foreach进行测试。

相关文章