C#舍入2位小数:截断与舍入
我想知道在将浮点四舍五入到2位小数时,使用Truncate或Round有哪些优点和缺点:C#舍入2位小数:截断与舍入,c#,truncate,rounding,C#,Truncate,Rounding,我想知道在将浮点四舍五入到2位小数时,使用Truncate或Round有哪些优点和缺点: float number = 3.4567070 Math.Round(number, 2) Math.Truncate(100 * number) / 100 哪一个是最好的和最便宜的?何时使用圆形和何时截断?这取决于您的目的。我不认为一个比另一个更有效率。这就像说“我应该使用钉子还是螺钉?”它们做不同的事情。Truncate的效率稍微高一些,但它们是非常不同的功能 以指定的精度计算与输入最接近的数字
float number = 3.4567070
Math.Round(number, 2)
Math.Truncate(100 * number) / 100
哪一个是最好的和最便宜的?何时使用圆形和何时截断?这取决于您的目的。我不认为一个比另一个更有效率。这就像说“我应该使用钉子还是螺钉?”它们做不同的事情。Truncate的效率稍微高一些,但它们是非常不同的功能
- 以指定的精度计算与输入最接近的数字 将值舍入为最接近的整数或指定的小数位数
- 有效地丢弃小数点后的任何数字。它将始终舍入到最接近零的整数 计算数字的整数部分
Input | Round | Truncate
------+-------+---------
-1.6 | -2 | -1
-1.5 | -2 | -1
-1.4 | -1 | -1
-0.5 | 0 | 0
0.5 | 0 | 0
1.4 | 1 | 1
1.5 | 2 | 1
1.6 | 2 | 1
如果您试图将小数四舍五入为2位小数,我强烈建议您使用round()
而不是Truncate()
,如果不是出于可读性和可维护性以外的原因。您的示例乍一看有点混乱,需要进行一些分析才能理解,它有效地使用了一些奇特的步法来获得Truncate()
方法来执行舍入操作
一般来说,在编写代码时,您应该首先使用“正确”的方法,如果基准测试显示出性能问题,那么您才应该尝试优化,例如“棘手”的代码示例。在您的示例中,使用truncate作为round函数。。