Phương thức Convert.ToInt16() chuyển đổi một giá trị sang số nguyên 16-bit có dấu (short, phạm vi -32,768 đến 32,767).
Ví dụ chuyển từ double
double doubleNum = 3.456;
short shortNum = Convert.ToInt16(doubleNum); // 3 (làm tròn)
Mã nguồn hoàn chỉnh
using System;
public class Demo
{
public static void Main()
{
double doubleNum = 3.456;
short shortNum = Convert.ToInt16(doubleNum);
Console.WriteLine("Converted {0} to {1}", doubleNum, shortNum);
}
}
Kết quả
Converted 3.456 to 3
Quy tắc làm tròn (Banker's Rounding)
| Giá trị đầu vào | Kết quả short | Giải thích |
|---|---|---|
| 3.456 | 3 | .456 < .5 → xuống |
| 3.5 | 4 | .5 → làm tròn đến số chẵn gần nhất (4) |
| 4.5 | 4 | .5 → làm tròn đến số chẵn gần nhất (4) |
| -3.5 | -4 | Số âm cũng làm tròn đến chẵn |
Các overload phổ biến
Convert.ToInt16(string); // "123" → 123
Convert.ToInt16(double); // 123.45 → 123
Convert.ToInt16(float); // 123.45f → 123
Convert.ToInt16(decimal); // 123.45m → 123
Convert.ToInt16(bool); // true → 1, false → 0
Convert.ToInt16(object); // Unbox rồi chuyển
Ngoại lệ
OverflowException: Giá trị ngoài [-32768, 32767]FormatException: String không đúng định dạng
So sánh với short.Parse / TryParse
// Parse - chỉ string, ném exception
short a = short.Parse("123");
// TryParse - an toàn
short b;
bool ok = short.TryParse("123", out b);
// Convert - nhiều kiểu hơn, null→0
short c = Convert.ToInt16(null); // 0