📜  Math.Floor() 和 Math.Truncate() 之间的区别 - C# (1)

📅  最后修改于: 2023-12-03 15:32:50.447000             🧑  作者: Mango

Math.Floor() 和 Math.Truncate() 之间的区别 - C#

在 C# 中,我们可以使用 Math.Floor()Math.Truncate() 函数来向下取整一个浮点数。虽然这两个函数看起来非常相似,但它们之间有一些微小的区别。下面我们将详细介绍这两个函数之间的区别。

Math.Floor()

Math.Floor() 函数返回小于或等于指定浮点数的最大整数。这个函数的返回类型是 double,因为它可能会返回一个小数。让我们看看它的使用示例:

double num1 = 3.14159;
double num2 = -3.14159;

Console.WriteLine(Math.Floor(num1)); // 输出 3.0
Console.WriteLine(Math.Floor(num2)); // 输出 -4.0

在这个例子中,Math.Floor(num1) 返回 3.0,因为 3 是小于等于 3.14159 的最大整数。Math.Floor(num2) 返回 -4.0,因为 -4 是小于等于 -3.14159 的最大整数。

Math.Truncate()

Math.Truncate() 函数返回指定的浮点数的整数部分。这个函数的返回类型也是 double,因为它可能会返回一个小数。让我们看看它的使用示例:

double num1 = 3.14159;
double num2 = -3.14159;

Console.WriteLine(Math.Truncate(num1)); // 输出 3.0
Console.WriteLine(Math.Truncate(num2)); // 输出 -3.0

在这个例子中,Math.Truncate(num1) 返回 3.0,因为 3.14159 的小数部分为 .14159,所以截断后只剩下整数部分 3Math.Truncate(num2) 返回 -3.0,因为 -3.14159 的小数部分为 .14159,所以截断后只剩下整数部分 -3

区别

尽管这两个方法都用于向下取整,但它们之间存在一些区别,如下所示:

  • Math.Floor() 的返回值始终是小于或等于指定的数字,并且它的返回值总是浮点数。Math.Truncate() 的返回值可以是负数,并且它的返回值总是浮点数。
  • 当传递给这两个函数的参数是正数时,它们的返回值是相同的。但是,当传递的参数是负数时,它们的返回值可能会不同。Math.Floor() 返回小于或等于传递的参数的最大整数,而 Math.Truncate() 只截取数字的整数部分。
总结

在 C# 中,Math.Floor()Math.Truncate() 函数是向下取整的两种方式。虽然它们的功能看起来类似,但它们之间存在细微的差别。如果您需要将数字向下取整并始终得到一个浮点数,那么应该使用 Math.Floor()。如果您只需要保留数字的整数部分,那么可以使用 Math.Truncate()