.NET 帮助

C# 圆 (如何为开发人员工作)

发布 2023年八月29日
分享:

四舍五入是一个基本的数学概念,在现实世界中经常应用。在 C# 中, Math.Round "方法 通过四舍五入,您可以将数值四舍五入到最接近的整数值或特定的小数位数。本教程深入探讨了四舍五入在 C# 中的细微差别,并说明了如何利用这种强大的方法。

四舍五入简介

四舍五入是指将一个数字调整为最接近的整数或小数,以使其更简单或符合特定的要求。例如,当你有一个十进制数 3.14159,四舍五入到小数点后两位就会得到 3.14

为什么要将数字四舍五入?

1.简洁性四舍五入的数字通常更容易阅读和理解。

2.精确性在某些情况下,对四舍五入的数值进行运算比精确运算更有效率,尤其是在货币计算等情况下。

常见的四舍五入情况

1.最接近整数将十进制数值四舍五入为最接近的整数。

2.指定小数位数":将一个数字四舍五入到指定的小数位数,如将 15.678 四舍五入到小数点后两位就是 15.68

C&num 中四舍五入的基础知识;

C# 通过 "Math.Round "方法提供了一个强大的四舍五入系统。该方法可以接受各种参数,以自定义四舍五入操作。

四舍五入到最接近的整数值

最简单的Math.Round方法是将一个双数值舍入到最接近的整数值。如果给定的数字与两个整数相等,则四舍五入到最接近的偶数,通常称为 "银行四舍五入"。

double originalValue = 4.5;
double roundedValue = Math.Round(originalValue);
Console.WriteLine($"Original: {originalValue}, Rounded: {roundedValue}");
double originalValue = 4.5;
double roundedValue = Math.Round(originalValue);
Console.WriteLine($"Original: {originalValue}, Rounded: {roundedValue}");
Dim originalValue As Double = 4.5
Dim roundedValue As Double = Math.Round(originalValue)
Console.WriteLine($"Original: {originalValue}, Rounded: {roundedValue}")
VB   C#

在上例中,*4.545的距离相等。由于 4 是最近的偶数,因此该方法返回 4

四舍五入到指定的小数位数

还可以使用附加参数将双精度浮点数舍入到指定的小数位数:

double value = 7.34567;
double rounded = Math.Round(value, 2); // Rounds to two decimal places
Console.WriteLine($"Original: {value}, Rounded: {rounded}");
double value = 7.34567;
double rounded = Math.Round(value, 2); // Rounds to two decimal places
Console.WriteLine($"Original: {value}, Rounded: {rounded}");
Dim value As Double = 7.34567
Dim rounded As Double = Math.Round(value, 2) ' Rounds to two decimal places
Console.WriteLine($"Original: {value}, Rounded: {rounded}")
VB   C#

由于我们指定四舍五入到小数点后两位,因此该方法会将原始值 7.34567 四舍五入到 7.35

中点四舍五入模式

处理中点值时 (与两个可能的四舍五入值相等的值)此外,C# 还提供了 "MidpointRounding "模式来确定这些值的舍入方式。

默认四舍五入

默认情况下,Math.Round 会将中点值舍入为最接近的偶数。

double valueOne = 4.5;  // Rounded to 4
double valueTwo = 5.5;  // Rounded to 6
double valueOne = 4.5;  // Rounded to 4
double valueTwo = 5.5;  // Rounded to 6
Dim valueOne As Double = 4.5 ' Rounded to 4
Dim valueTwo As Double = 5.5 ' Rounded to 6
VB   C#

指定 "中点包围 "模式

为了对中点值的舍入操作提供更多控制,可以将特定的 MidpointRounding 模式作为参数传入:

double value = 5.5;
double rounded = Math.Round(value, 0, MidpointRounding.AwayFromZero);
Console.WriteLine($"Original: {value}, Rounded: {rounded}");
double value = 5.5;
double rounded = Math.Round(value, 0, MidpointRounding.AwayFromZero);
Console.WriteLine($"Original: {value}, Rounded: {rounded}");
Dim value As Double = 5.5
Dim rounded As Double = Math.Round(value, 0, MidpointRounding.AwayFromZero)
Console.WriteLine($"Original: {value}, Rounded: {rounded}")
VB   C#

在本例中,"MidpointRounding.AwayFromZero "模式确保数字四舍五入为 "6"。

使用 Math.Round 处理小数点数值

虽然我们已经讨论了双数值的四舍五入,但 C# 也支持小数值的四舍五入。它们的方法类似,但都适用于十进制数据类型。下面是一个示例

decimal decimalValue = 5.678m;
decimal roundedDecimal = Math.Round(decimalValue, 1); // Rounds to one decimal place
Console.WriteLine($"Original: {decimalValue}, Rounded: {roundedDecimal}");
decimal decimalValue = 5.678m;
decimal roundedDecimal = Math.Round(decimalValue, 1); // Rounds to one decimal place
Console.WriteLine($"Original: {decimalValue}, Rounded: {roundedDecimal}");
Dim decimalValue As Decimal = 5.678D
Dim roundedDecimal As Decimal = Math.Round(decimalValue, 1) ' Rounds to one decimal place
Console.WriteLine($"Original: {decimalValue}, Rounded: {roundedDecimal}")
VB   C#

当四舍五入到小数点后一位时,十进制数 5.678四舍五入为 5.7

自定义四舍五入函数

有时,您可能需要执行标准 Math.Round 方法未涵盖的特定四舍五入操作。编写自定义四舍五入函数可以让您完全控制整个过程。

四舍五入

要始终向上舍入到最接近的整数,可以使用 Math.Ceiling 方法:

double value = 4.3;
double roundedUp = Math.Ceiling(value);
Console.WriteLine($"Original: {value}, Rounded Up: {roundedUp}");
double value = 4.3;
double roundedUp = Math.Ceiling(value);
Console.WriteLine($"Original: {value}, Rounded Up: {roundedUp}");
Dim value As Double = 4.3
Dim roundedUp As Double = Math.Ceiling(value)
Console.WriteLine($"Original: {value}, Rounded Up: {roundedUp}")
VB   C#

小数 "4.3 "四舍五入为 "5"。

向下舍入

相反,使用 Math.Floor 方法向下舍入到最接近的整数值:

double value = 4.7;
double roundedDown = Math.Floor(value);
Console.WriteLine($"Original: {value}, Rounded Down: {roundedDown}");
double value = 4.7;
double roundedDown = Math.Floor(value);
Console.WriteLine($"Original: {value}, Rounded Down: {roundedDown}");
Dim value As Double = 4.7
Dim roundedDown As Double = Math.Floor(value)
Console.WriteLine($"Original: {value}, Rounded Down: {roundedDown}")
VB   C#

小数 "4.7 "向下舍入为 "4"。

处理字符串输入

在许多应用程序中,您可能会以字符串形式处理数值。可以使用 C# 将字符串解析为二进制或小数,进行四舍五入,然后再转换回来。

解析和四舍五入

下面举例说明如何对包含小数的字符串进行四舍五入:

string originalString = "4.5678";
double parsedValue = double.Parse(originalString);
double rounded = Math.Round(parsedValue, 2); // Rounds to two decimal places
string roundedString = rounded.ToString();
Console.WriteLine($"Original: {originalString}, Rounded: {roundedString}");
string originalString = "4.5678";
double parsedValue = double.Parse(originalString);
double rounded = Math.Round(parsedValue, 2); // Rounds to two decimal places
string roundedString = rounded.ToString();
Console.WriteLine($"Original: {originalString}, Rounded: {roundedString}");
Dim originalString As String = "4.5678"
Dim parsedValue As Double = Double.Parse(originalString)
Dim rounded As Double = Math.Round(parsedValue, 2) ' Rounds to two decimal places
Dim roundedString As String = rounded.ToString()
Console.WriteLine($"Original: {originalString}, Rounded: {roundedString}")
VB   C#

原件:5678 4.5678,四舍五入: 4.57

财务应用中的四舍五入

在使用财务应用程序时,精确度至关重要。四舍五入的误差会导致重大问题。在这种情况下,首选十进制类型,因为它的精度比二进制高。

货币四舍五入示例

下面的示例演示了代表货币的十进制数值的四舍五入:

decimal originalValue = 1234.5678m;
decimal roundedValue = Math.Round(originalValue, 2, MidpointRounding.AwayFromZero);
Console.WriteLine($"Original: {originalValue:C}, Rounded: {roundedValue:C}");
decimal originalValue = 1234.5678m;
decimal roundedValue = Math.Round(originalValue, 2, MidpointRounding.AwayFromZero);
Console.WriteLine($"Original: {originalValue:C}, Rounded: {roundedValue:C}");
Dim originalValue As Decimal = 1234.5678D
Dim roundedValue As Decimal = Math.Round(originalValue, 2, MidpointRounding.AwayFromZero)
Console.WriteLine($"Original: {originalValue:C}, Rounded: {roundedValue:C}")
VB   C#

上述代码将数值四舍五入到小数点后两位,符合大多数货币标准。

调试和排除四舍五入错误

有时,四舍五入操作可能不会产生预期结果。这些差异可能是浮点精度与双数值等问题造成的。

常见陷阱

  • 双精度double 类型可能并不总是精确地表示十进制数,从而导致意外的四舍五入结果。使用十进制类型可以缓解这一问题。
  • 不正确的中点舍入模式":确保根据具体要求使用正确的 MidpointRounding 模式。误用这些模式会导致四舍五入错误。

如何调试

利用日志和断点等工具跟踪舍入前后的值。检查原始值和传递给舍入方法的参数通常可以发现不一致之处。

钢铁套房

在掌握了 C# 四舍五入的基础知识后,您可能会想知道如何将自己的应用程序提升到一个新的水平,尤其是在处理复杂的数据格式时。这就是 Iron Suite 可以成为你的救星。该套件包括 IronPDF、IronXL、IronOCR 和 IronBarcode 等强大工具。让我们深入探讨一下这些工具如何与您的舍入操作集成,并进一步丰富您的应用程序。

IronPDF

C# Round(如何为开发人员工作) 图 1

IronPDF 是一个强大的 C# 库,设计用于 从 HTML 生成 PDF编辑和管理。想象一下,在执行舍入操作后,您需要生成 PDF 格式的报告。IronPDF 可以毫不费力地将您的 C# 代码转换为高质量的 PDF。

IronXL

C# Round(如何为开发人员工作) 图 2

IronXL IronXL 提供了处理 Excel 文件的功能,使 C# 开发人员能够无缝读取、写入和操作 Excel 电子表格。有了 IronXL,你可以从 Excel 表中检索十进制或两进制数据,在 C# 中执行四舍五入操作。

IronOCR

C# Round(如何为开发人员工作) 图 3

IronOCR 是一种先进的光学字符识别 (光学字符识别) C# 库,可识别图像和 PDF 文件并从中提取文本。假设您有包含数字数据的扫描文件或图像。使用 IronOCR,您可以提取这些数据,并在 C# 中对其进行处理或舍入。

IronBarcode

C# Round(如何为开发人员工作) 图 4

IronBarcode 是在 .NET 中生成、读取和分类条形码和 QR 码的强大工具。在需要将圆形数据编码成条形码的情况下 (例如,零售应用中的产品定价)因此,IronBarcode 的价值不可估量。

结论

C# 中的四舍五入是一个多方面的主题,在各个领域都有应用。了解内置方法,如 "Math.Round"、"Math.Floor "和 "Math.Ceiling",并知道何时使用适当的数据类型。 (二进制或十进制) 将使您能够高效地处理数字数据。

在 C# 中使用四舍五入有助于使数字更容易处理。但如果您还想对这些数字做更多处理呢?这就是 Iron Suite 的到来。它是一套可以帮助你处理 PDF、Excel 文件、图像中的文本和条形码的工具。

最激动人心的部分来了:您可以免费试用这些工具 试用许可 看看您是否喜欢。如果你决定买一个,每个的价格是 $749。但如果您想购买所有工具,只需支付两个工具的费用即可获得整套工具。这就像买四个工具却只花两个的钱一样! 查看铁套房的 许可证页面 了解更多信息。

< 前一页
C# 字典 TryGetValue(开发人员如何使用)
下一步 >
C# 逻辑运算符(开发人员如何使用)

准备开始了吗? 版本: 2024.9 刚刚发布

免费NuGet下载 总下载量: 10,731,156 查看许可证 >