C#-এ Decimal.ToUInt16() মেথডটি নির্দিষ্ট Decimal মানকে সমতুল্য ১৬-বিট অনসাইনড ইন্টিজার (ushort) এ রূপান্তর করে। দশমিক অংশ থাকলে সেটি ট্রানকেট (কেটে দেয়া) হয়।
সিনট্যাক্স (Syntax)
public static ushort ToUInt16(decimal value);
উদাহরণ ১: সাধারণ দশমিক মান
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
উদাহরণ ২: খুব ছোট দশমিক মান (১ এর নিচে)
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
UInt16 (ushort) পরিসীমা এবং ওভারফ্লো
- MinValue: 0
- MaxValue: 65,535 (2¹⁶ - 1)
- আকার: ২ বাইট
ওভারফ্লো টেস্ট
using System;
public class Demo
{
public static void Main()
{
decimal[] values =
{
65535m, // MaxValue - OK
65536m, // MaxValue + 1 - Overflow!
-1m, // Negative - Overflow!
32767.9m // Normal - OK (truncates to 32767)
};
foreach (var v in values)
{
try
{
ushort result = Decimal.ToUInt16(v);
Console.WriteLine($"{v} -> {result} ✓");
}
catch (OverflowException)
{
Console.WriteLine($"{v} -> OverflowException! ✗");
}
}
}
}
আউটপুট
65535 -> 65535 ✓ 65536 -> OverflowException! ✗ -1 -> OverflowException! ✗ 32767.9 -> 32767 ✓
Decimal.ToUInt16() ফ্যামিলি মেথডসমূহ
| মেথড | রিটার্ন টাইপ | বিট | রেঞ্জ |
|---|---|---|---|
ToByte() | byte | 8-bit | 0 - 255 |
ToUInt16() | ushort | 16-bit | 0 - 65,535 |
ToUInt32() | uint | 32-bit | 0 - 4,294,967,295 |
ToUInt64() | ulong | 64-bit | 0 - 18,446,744,073,709,551,615 |
ToSByte() | sbyte | 8-bit signed | -128 - 127 |
ToInt16() | short | 16-bit signed | -32,768 - 32,767 |
ToInt32() | int | 32-bit signed | -2,147,483,648 - 2,147,483,647 |
ToInt64() | long | 64-bit signed | ±9.22×10¹⁸ |
সুরক্ষিত কনভার্সন প্যাটার্ন (TryParse স্টাইল)
public static bool TryToUInt16(decimal value, out ushort result)
{
try
{
result = Decimal.ToUInt16(value);
return true;
}
catch (OverflowException)
{
result = 0;
return false;
}
}
// ব্যবহার
decimal input = 50000.99m;
if (TryToUInt16(input, out ushort port))
{
Console.WriteLine($"Valid port: {port}"); // 50000
}
else
{
Console.WriteLine("Invalid port number");
}
প্রয়োগিক ব্যবহার: নেটওয়ার্ক পোর্ট নম্বর
public static ushort ParsePort(decimal portNumber)
{
if (portNumber < 0 || portNumber > ushort.MaxValue)
throw new ArgumentOutOfRangeException(nameof(portNumber), "Port must be 0-65535");
return Decimal.ToUInt16(portNumber);
}
// ব্যবহার
ushort httpPort = ParsePort(80.0m); // 80
ushort httpsPort = ParsePort(443.0m); // 443
ushort customPort = ParsePort(8080.5m); // 8080 (truncated)
নোট: ushort হলো System.UInt16-এর别名 (alias)। CLS-কম্প্লায়েন্ট নয় (পাবলিক API-এ পরামর্শ করা হয় না), কিন্তু ইন্টারনাল ব্যবহারে দ্রুত এবং মেমরি-দক্ষ।