C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#でDecimalを32ビット符号なし整数(uint)に変換する方法

C#で指定した Decimal の値を、それと等価な32ビット符号なし整数(uint)に変換するには、Decimal.ToUInt32() メソッドを使用します。

このメソッドは、引数として渡された Decimal 値を32ビット符号なし整数へ変換して返します。小数部分は切り捨てられ(ゼロ方向への丸め)、変換後の値が uint の範囲(0 ~ 4,294,967,295)を超える場合は OverflowException がスローされる点に注意してください。

構文

public static uint ToUInt32 (decimal value);

例1:0に近い小数値の場合

まず、0.001 を変換してみましょう。

using System;
public class Demo {
   public static void Main() {
      Decimal val = 0.001m;
      Console.WriteLine("Decimal値 = " + val);
      uint res = Decimal.ToUInt32(val);
      Console.WriteLine("32ビット符号なし整数 = " + res);
   }
}

出力

このコードを実行すると、次のような出力が得られます。

Decimal値 = 0.001
32ビット符号なし整数 = 0

0.001 の小数部分は切り捨てられるため、結果は 0 になります。

例2:小数を含む値の場合

続いて、別の例を見てみましょう。

using System;
public class Demo {
   public static void Main() {
      Decimal val = 67.487m;
      Console.WriteLine("Decimal値 = " + val);
      uint res = Decimal.ToUInt32(val);
      Console.WriteLine("32ビット符号なし整数 = " + res);
   }
}

出力

このコードを実行すると、次のような出力が得られます。

Decimal値 = 67.487
32ビット符号なし整数 = 67

このように、Decimal.ToUInt32() メソッドを使えば、Decimal 型の値から簡単に32ビット符号なし整数を取得できます。ただし、負の値や範囲外の値を渡すと例外が発生するため、実際の開発では事前に値の範囲チェックを行うことをおすすめします。

  1. C/C++で整数オーバーフローを検出する方法|安全な実装テクニックを解説

    C/C++において整数のオーバーフローを確実に防ぐ唯一の安全な方法は、演算が行われる前にオーバーフローが発生しないかをチェックすることです。ただし、いくつかのトリッキーな手法を使えば、オーバーフローを検出することも可能です。符号なし整数の加算でオーバーフローを検出する例として、unsigned int同士の加算におけるオーバーフロー検出を見てみましょう。加算結果が、足し合わせたどちらか一方の値よりも小さくなっていれば、オーバーフローが発生したことになります。サンプルコードunsigned int x, y; unsigned int value = x + y; bool overflow =

  2. C++で学ぶ符号なし整数のリストアリング除算アルゴリズム

    本記事では、除算アルゴリズムを用いて符号なし整数の割り算を行う方法について解説します。除算アルゴリズムには、紙の上で手計算として行われるものと、デジタル回路に実装されるものがあります。除算アルゴリズムは大きく「低速除算アルゴリズム」と「高速除算アルゴリズム」の2種類に分類され、低速除算アルゴリズムにはリストアリング法、非実行リストアリング法、SRT法、非リストアリング法などが含まれます。 このチュートリアルでは、0 < 除数 < 被除数 を前提として、リストアリング(Restoring)除算アルゴリズムについて詳しく見ていきます。 解法のアプローチ ここでは、商を格納するレジスタQ