.NET ヘルプ

C# ラウンド(開発者向けの仕組み)

公開済み 2023年8月29日
共有:

数値の丸めは、現実のシナリオでよく適用される基本的な数学概念です。 C#では、Math.Round メソッドこれにより、値を最も近い整数値または特定の小数点以下の桁数に四捨五入することが可能になります。 このチュートリアルでは、C#での丸めのニュアンスに深入りし、その強力なメソッドを活用する方法を説明します。

Roundingの紹介

数値の四捨五入とは、数値をより簡単にするため、または特定の要件に従うために、最も近い整数または小数の値に調整することを意味します。 例えば、10進数 3.14159 を小数点以下2桁に丸めると、結果は 3.14 になります。

なぜ四捨五入するのか?

  1. シンプルさ: 丸められた数値は、しばしば読みやすく理解しやすいです。

  2. 精度: 場合によっては、特に通貨計算のような文脈では、正確な値よりも丸められた値で操作する方が効率的なことがあります。

一般的な四捨五入のシナリオ

  1. Nearest Integer: 少数値を最も近い整数に丸めます。

  2. 指定された小数点の桁数: 数値を特定の小数点以下の桁数に丸めます。例えば、15.678を小数点以下2桁に丸めると15.68になります。

C# における丸めの基本

C#では、Math.Roundメソッドを通じて強力な四捨五入システムを提供しています。 このメソッドは、丸め操作をカスタマイズするために、さまざまな引数とパラメータを受け入れることができます。

最も近い整数値に丸める

最も単純な形のMath.Roundメソッドは、double値を最も近い整数値に丸めます。 与えられた数が2つの整数から等距離である場合、それは最も近い偶数に丸められます。これはしばしば「バンカーズラウンディング」と呼ばれます。

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 を小数点以下2桁に丸めるよう指定したため、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 モードの指定

中間値の丸め操作に対するコントロールを強化するために、特定の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の使用

double 値を丸めることについて説明しましたが、C#は decimal 値の丸めもサポートしています。 そのメソッドは類似していますが、decimalデータ型を使用して動作します。 ここに例があります

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 は、小数点以下1桁に四捨五入すると 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#

10進数の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.74 に切り捨てられます。

文字列入力の処理

多くのアプリケーションでは、数値を文字列として処理することがあります。 文字列をダブルまたはデシマルに解析し、四捨五入してから再度変換することは、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#

元の値: 4.5678, 四捨五入した値: 4.57

金融アプリケーションにおける丸め

金融アプリケーションを扱う際には、精度が重要です。 丸め誤差は重大な問題を引き起こす可能性があります。 そのような場合、decimal 型は double 型よりも高精度であるため、優先されます。

通貨の端数処理例

以下の例は、通貨を表す小数値の四捨五入を示しています。

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#

上記のコードは値を小数点以下2桁に丸め、大半の通貨規格に準拠しています。

丸め誤差のデバッグとトラブルシューティング

四捨五入処理が期待通りの結果にならない場合があります。 これらの不一致は、double値の浮動小数点精度などの問題が原因である可能性があります。

一般的な落とし穴

  • ダブル精度:double型は常に小数を正確に表現できるとは限らず、予期しない丸め結果をもたらすことがあります。」 小数点型を使用することで、これを軽減できます。
  • 不正確な MidpointRounding モード: 特定の要件に適した正しい MidpointRounding モードを使用することを確認してください。 これらのモードを誤用すると、丸め誤差につながる可能性があります。

デバッグ方法

丸めの前後で値を追跡するために、ロギングやブレークポイントなどのツールを活用してください。 元の値と丸めメソッドに渡されたパラメータを調べることで、通常は不整合を明らかにすることができます。

アイアンスイート

C#での四捨五入の基本をマスターした後、特に複雑なデータ形式を扱う場合、アプリケーションを次のレベルに引き上げる方法が気になるかもしれません。 についてIron Suiteここではあなたの救世主となり得ます。 このスイートには、IronPDF、IronXL、IronOCR、IronBarcode のような強力なツールが含まれています。 これらのツールがどのようにしてあなたの四捨五入操作に統合し、アプリケーションをさらに充実させることができるかについて、より深く掘り下げてみましょう。

IronPDF

C# ロンダ (開発者向けの動作方法) 図1

IronPDFC#で設計された強力なライブラリですHTMLからのPDF生成編集および管理。 丸め演算を行った後にPDF形式でレポートを生成する必要があるシナリオを想像してみてください。 IronPDFは、C#コードを高品質なPDFに簡単に変換できます。

IronXL

IronXL は、.NET、Python、および他のプログラミング言語で Excel 形式の読み取り、書き込み、編集を可能にするライブラリです。ユーザーは、Microsoft Excel を使わずに、スプレッドシートをプログラムで管理することができます。主要な機能には、Excel ファイルの作成、既存ファイルの読み込み、セルの書き換え、グリッドデータの操作などが含まれます。データ分析、自動化、レポート生成のために最適なツールです。

IronXL の特長は、使いやすさと柔軟性にあります。どのレベルのプログラマーでも、数行のコードで Excel 操作を実行できます。開発者は、RBGA カラー、フォントスタイル、ボーダースタイルなど、ビジュアル要素のカスタマイズも簡単に行えます。

以下のプラットフォームで使用可能です:

  • IronXL for .NET
  • IronXL for Python

C# ラウンド(開発者にとっての仕組み)図 2

IronXLExcelファイルを操作するための機能を提供し、C#開発者がExcelスプレッドシートをシームレスに読み取り、書き込み、操作できるようにします。 IronXLを使用すると、Excelシートから小数またはダブルデータを取得し、C#で丸めの操作を実行できます。

IronOCR

IronOCR(IronOCR) は、高精度の光学文字認識 (Optical Character Recognition, OCR) ライブラリです。以下はその主な機能と利点です。

  • 高精度: IronOCR は、画像やPDFから文字情報を高精度で抽出します。複雑なフォントや手書き文字にも対応しています。
  • 多言語対応: IronOCR は、多数の言語に対応しており、グローバルなプロジェクトに最適です。
  • 簡単な統合: .NET アプリケーションに簡単に統合できるため、開発者の手間を大幅に削減します。
  • 豊富なフォーマットサポート: PDF、TIFF、JPG、PNG など、さまざまなファイル形式をサポートしています。
  • カスタマイズ可能な OCR 設定: パフォーマンスや精度を最適化するために、様々な設定を調整できます。

サポートされている開発プラットフォームには、.NET Framework、.NET Core、Xamarin などがあります。 IronOCR(IronOCR) は、開発者が迅速かつ効率的にOCR機能を統合するための強力なツールです。

さらに詳しい情報やデモ版のダウンロードは、公式ウェブサイト https://ironsoftware.com からご覧いただけます。

C# 丸め (開発者向けの動作方法) 図3

IronOCR高度な光学文字認識(Optical Character Recognition)(OCR (光学式文字認識))画像やPDFからテキストを認識して抽出するためのC#用ライブラリ。 スキャンされた文書や数値データを含む画像があるとします。 IronOCRを使用すると、これらのデータを抽出し、C#で処理または丸めることができます。

IronBarcode

C# ラウンド(開発者にとっての仕組み)図4

IronBarcode.NET でバーコードやQRコードを生成、読み取り、分類するための強力なツールです。 バーコードにデータをエンコードする必要があるコンテキストでは(たとえば、小売アプリケーションにおける製品の価格設定), IronBarcode はとても貴重です。

結論

C#における四捨五入は、多岐にわたる分野で応用されています。 組み込みのメソッドである Math.RoundMath.Floor、および Math.Ceiling を理解し、適切なデータ型を使用するタイミングを知ること(ダブルまたはデシマル)数値データを効率的に処理できるようにします。

C#で丸めを使用すると、数値を扱いやすくなります。 では、これらの数字を使ってさらに多くのことをしたい場合はどうしますか? IronPDF for .NET comes into play. It’s designed to help developers generate, manipulate, and manage PDF documents within .NET applications. With IronPDF for .NET, you can create PDFs from HTML, CSS, JavaScript, ASPX, and MVC view engines, and even convert existing documents to PDF seamlessly. Whether you need to merge PDFs, add watermarks, or extract text and images, IronPDF for .NET offers a robust and user-friendly API.

IronPDF for Java offers similar functionality but is tailored for Java applications. It supports converting HTML to PDF, merging PDF documents, and manipulating text and images within PDF files.

IronPDF for Python provides an easy-to-use interface for Python developers looking to incorporate PDF capabilities into their applications. It enables HTML to PDF conversion, PDF merging, and other essential PDF operations.

IronPDF for Node.js allows Node.js developers to generate and manipulate PDFs effortlessly. It supports HTML to PDF conversion, text and image extraction, and other functionalities critical for modern web applications.

Opting for any version of IronPDF allows developers to bypass complicated coding processes and focus on building their core applications. Additionally, the detailed documentation and comprehensive support from Iron Software guarantee a smooth integration and implementation process.Iron Suite登場します。 これは、PDF、Excelファイル、画像のテキスト、バーコードを操作するのに役立つ一連のツールです。

ここからがエキサイティングな部分です:これらのツールを無料でお試しいただけます。試用ライセンスご利用いただけるかどうかを確認してください。 ご購入を決定された場合、各ライセンスの費用は $749 です。 しかし、すべてのツールを購入したい場合は、2つのツール分の価格で全セットを手に入れることができます。 それはまるで4つのツールを得ているのに、2つ分の料金しか支払わないかのようです。! Iron Suiteのライセンスページ詳細については。

< 以前
C# Dictionary TryGetValue(開発者のための動作方法)
次へ >
C# 論理演算子(開発者のための仕組み)