কম্পিউটার টিউটোরিয়াল

C#-এ Decimal.ToUInt16() মেথড: দশমিক থেকে ১৬-বিট অনসাইনড ইন্টিজার


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()byte8-bit0 - 255
ToUInt16()ushort16-bit0 - 65,535
ToUInt32()uint32-bit0 - 4,294,967,295
ToUInt64()ulong64-bit0 - 18,446,744,073,709,551,615
ToSByte()sbyte8-bit signed-128 - 127
ToInt16()short16-bit signed-32,768 - 32,767
ToInt32()int32-bit signed-2,147,483,648 - 2,147,483,647
ToInt64()long64-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-এ পরামর্শ করা হয় না), কিন্তু ইন্টারনাল ব্যবহারে দ্রুত এবং মেমরি-দক্ষ।

  1. C#-এ Decimal.ToSByte() পদ্ধতি

  2. C#-এ Decimal.ToOACurrency() পদ্ধতি

  3. C#-এ Decimal.Floor() মেথড

  4. C#-এ Decimal.Divide() মেথড