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

Phương thức Double.GetTypeCode() trong C#

Giới thiệu

Phương thức Double.GetTypeCode() trong C# trả về TypeCode cho kiểu giá trị Double (số thực dấu chấm động 64-bit). TypeCode là enum chỉ định kiểu dữ liệu cơ bản.

Cú pháp

public TypeCode GetTypeCode ();

Ví dụ 1: Double nguyên

using System;

public class Demo {
    public static void Main() {
        double d = 15d;
        Console.WriteLine("Giá trị Double = " + d);
        Console.WriteLine("HashCode của Double = " + d.GetHashCode());
        TypeCode type = d.GetTypeCode();
        Console.WriteLine("TypeCode của Double = " + type);
    }
}

Đầu ra ví dụ 1

Giá trị Double = 15
HashCode của Double = 1076756480
TypeCode của Double = Double

Ví dụ 2: Double có phần thập phân

using System;

public class Demo {
    public static void Main() {
        double d = 25.5d;
        Console.WriteLine("Giá trị Double = " + d);
        Console.WriteLine("HashCode của Double = " + d.GetHashCode());
        TypeCode type = d.GetTypeCode();
        Console.WriteLine("TypeCode của Double = " + type);
    }
}

Đầu ra ví dụ 2

Giá trị Double = 25.5
HashCode của Double = 1077510144
TypeCode của Double = Double

Giải thích

  • TypeCode.Double có giá trị số là 14.
  • Dù giá trị double là gì (bình thường, vô cực, NaN, MinValue, MaxValue), GetTypeCode() luôn trả về TypeCode.Double.
  • Double là struct 64-bit, tuân theo chuẩn IEEE 754 double-precision.

So sánh Single vs Double

Đặc điểmSingle (float)Double (double)
Kích thước32-bit (4 bytes)64-bit (8 bytes)
Độ chính xác~7 chữ số thập phân~15-17 chữ số thập phân
Phạm vi±1.5e-45 đến ±3.4e38±5.0e-324 đến ±1.7e308
TypeCodeSingle (13)Double (14)
StructSystem.SingleSystem.Double
Alias C#floatdouble

Ứng dụng GetTypeCode()

  • Serialization: ghi kiểu dữ liệu vào stream/file.
  • Dynamic dispatch: switch (value.GetTypeCode()) xử lý từng kiểu.
  • Database ORM: ánh xạ Double → DOUBLE PRECISION / FLOAT(53).
  • Validation: kiểm tra kiểu trước khi convert.

Lưu ý về hash code

Hash code của double phụ thuộc vào biểu diễn bit. Hai giá trị double bằng nhau theo Equals có cùng hash code. Tuy nhiên do độ chính xác, 0.1 + 0.2 != 0.3 trong double, nên hash code cũng khác.