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.Doublecó 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. Doublelà struct 64-bit, tuân theo chuẩn IEEE 754 double-precision.
So sánh Single vs Double
| Đặc điểm | Single (float) | Double (double) |
|---|---|---|
| Kích thước | 32-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 |
| TypeCode | Single (13) | Double (14) |
| Struct | System.Single | System.Double |
| Alias C# | float | double |
Ứ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.