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

C#でDecimalの値を16ビット符号なし整数(ushort)に変換する方法

C#では、Decimal.ToUInt16()メソッドを使うことで、指定されたDecimal型の値を等価な16ビット符号なし整数(ushort)に変換できます。このメソッドは、引数として渡されたDecimal値の小数点以下を切り捨て、0~65535の範囲内の整数値を返します。

なお、変換元の値がushortの範囲(0~65535)を超えている場合や負の値の場合には、OverflowExceptionがスローされる点に注意してください。

サンプルコード1

以下の例では、Decimal型の値「875.647」を16ビット符号なし整数に変換しています。

using System;
public class Demo {
    public static void Main() {
        Decimal val = 875.647m;
        Console.WriteLine("Decimal value = " + val);
        ushort res = Decimal.ToUInt16(val);
        Console.WriteLine("16-bit unsigned integer = " + res);
    }
}

出力結果

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

Decimal value = 875.647
16-bit unsigned integer = 875

ご覧のとおり、小数点以下の「.647」は切り捨てられ、「875」という整数値に変換されました。

サンプルコード2

続いて、1未満の小数値を変換した場合の動作を確認してみましょう。

using System;
public class Demo {
    public static void Main() {
        Decimal val = 0.001m;
        Console.WriteLine("Decimal value = " + val);
        ushort res = Decimal.ToUInt16(val);
        Console.WriteLine("16-bit unsigned integer = " + res);
    }
}

出力結果

実行結果は以下のとおりです。

Decimal value = 0.001
16-bit unsigned integer = 0

このように、0.001のような1未満の値を変換すると、小数部分が切り捨てられて「0」になります。Decimal.ToUInt16メソッドは四捨五入ではなく切り捨てを行うため、変換時には意図した挙動になっているか必ず確認しましょう。

  1. C#で10進数を8進数に変換する方法をわかりやすく解説

    C#プログラミングにおいて、10進数の値を8進数に変換したい場面は少なくありません。本記事では、whileループと剰余演算を使った基本的な変換方法を、サンプルコードとともにわかりやすく解説します。 10進数から8進数への変換の仕組み 10進数を8進数に変換するには、以下の手順で処理を行います。 対象となる10進数の値に対してwhileループを実行し、8で割った余り(剰余)を8進数用の配列に格納します。 次に、その数値を8で割り、商を新たな対象の値として処理を繰り返します。 数値が0になった時点でループを終了し、格納した余りを逆順に出力すると、それが8進数表現となります。 変換処理のコア

  2. C#のint型が取れる最大値はいくつ?整数型の範囲を一覧で解説

    C#における整数型 int の最大値は 2,147,483,647(約21億)です。これは32ビット符号付き整数の上限にあたり、プログラム内では int.MaxValue という定数で取得することもできます。逆に最小値は −2,147,483,648 で、int.MinValue で参照可能です。C#の主なデータ型と値の範囲一覧以下の表は、C#で利用できる主なデータ型と、それぞれの意味・範囲・既定値をまとめたものです。用途に応じて適切な型を選ぶことで、メモリの無駄遣いやオーバーフローを防ぐことができます。型説明範囲既定値boolブール値(真偽値)true または falsefalsebyte8