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メソッドは四捨五入ではなく切り捨てを行うため、変換時には意図した挙動になっているか必ず確認しましょう。
-
C#で10進数を8進数に変換する方法をわかりやすく解説
C#プログラミングにおいて、10進数の値を8進数に変換したい場面は少なくありません。本記事では、whileループと剰余演算を使った基本的な変換方法を、サンプルコードとともにわかりやすく解説します。 10進数から8進数への変換の仕組み 10進数を8進数に変換するには、以下の手順で処理を行います。 対象となる10進数の値に対してwhileループを実行し、8で割った余り(剰余)を8進数用の配列に格納します。 次に、その数値を8で割り、商を新たな対象の値として処理を繰り返します。 数値が0になった時点でループを終了し、格納した余りを逆順に出力すると、それが8進数表現となります。 変換処理のコア
-
C#のint型が取れる最大値はいくつ?整数型の範囲を一覧で解説
C#における整数型 int の最大値は 2,147,483,647(約21億)です。これは32ビット符号付き整数の上限にあたり、プログラム内では int.MaxValue という定数で取得することもできます。逆に最小値は −2,147,483,648 で、int.MinValue で参照可能です。C#の主なデータ型と値の範囲一覧以下の表は、C#で利用できる主なデータ型と、それぞれの意味・範囲・既定値をまとめたものです。用途に応じて適切な型を選ぶことで、メモリの無駄遣いやオーバーフローを防ぐことができます。型説明範囲既定値boolブール値(真偽値)true または falsefalsebyte8