Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C#

Phương thức Convert.ToDecimal trong C#

Phương thức Convert.ToDecimal() chuyển đổi một giá trị xác định sang kiểu decimal (số thực thập phân độ chính xác cao, 128-bit). Hỗ trợ chuyển từ nhiều kiểu: string, int, double, float, v.v.

Ví dụ chuyển từ string có dấu phân cách nghìn

string stringVal = "2,345.26";
decimal decimalVal = Convert.ToDecimal(stringVal);  // 2345.26

Mã nguồn hoàn chỉnh

using System;

public class Demo
{
    public static void Main()
    {
        decimal decimalVal;
        string stringVal = "2,345.26";
        decimalVal = Convert.ToDecimal(stringVal);
        Console.WriteLine("String converted to decimal = {0}", decimalVal);
    }
}

Kết quả

String converted to decimal = 2345.26

Các overload phổ biến

"123.45"
Kiểu đầu vàoVí dụKết quả
string123.45m
int/long4242m
double/float3.143.14m (có thể mất độ chính xác)
booltrue1m
objectboxed valueUnbox rồi chuyển

Lưu ý quan trọng

  • Phụ thuộc Culture: Dấu phân cách thập phân và nhóm nghìn tuỳ theo culture hiện tại hoặc IFormatProvider truyền vào.
  • Chuyển từ double/float có thể gây mất độ chính xác do biểu diễn nhị phân.
  • Ném FormatException nếu string không đúng định dạng số.
  • Ném OverflowException nếu giá trị vượt quá phạm vi decimal (±7.9×10²⁸).

Ví dụ với CultureInfo

// Việt Nam: dấu phẩy là thập phân, chấm là nhóm nghìn
string vn = "2.345,26";
decimal d = Convert.ToDecimal(vn, new CultureInfo("vi-VN"));  // 2345.26

// Mỹ: chấm là thập phân, phẩy là nhóm nghìn
string us = "2,345.26";
decimal d2 = Convert.ToDecimal(us, CultureInfo.InvariantCulture);  // 2345.26