Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#舍入2位小数:截断与舍入_C#_Truncate_Rounding - Fatal编程技术网

C#舍入2位小数:截断与舍入

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的效率稍微高一些,但它们是非常不同的功能 以指定的精度计算与输入最接近的数字

我想知道在将浮点四舍五入到2位小数时,使用Truncate或Round有哪些优点和缺点:

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函数。。