Cách tốt nhất để chuyển đổi một doublethành một là intgì? Có nên sử dụng dàn diễn viên?
etc.:)
Cách tốt nhất để chuyển đổi một doublethành một là intgì? Có nên sử dụng dàn diễn viên?
etc.:)
Câu trả lời:
Bạn có thể sử dụng một diễn viên nếu bạn muốn hành vi cắt ngắn về phía không. Ngoài ra, bạn có thể muốn sử dụng Math.Ceiling, Math.Round, Math.Floorvv - mặc dù bạn vẫn sẽ cần một dàn diễn viên sau đó.
Đừng quên rằng phạm vi intnhỏ hơn nhiều so với phạm vi double. Một dàn diễn viên từ doubleđến intsẽ không ném một ngoại lệ nếu giá trị là nằm ngoài phạm vi của inttrong một bối cảnh không được kiểm soát, trong khi một cuộc gọi đến Convert.ToInt32(double)di chúc. Kết quả của các diễn viên (trong một bối cảnh không được kiểm soát) rõ ràng không được xác định nếu giá trị nằm ngoài phạm vi.
intluôn là 32 bit, bất kể bạn đang sử dụng máy 32 hay 64 bit.
intVal = System.Convert.ToInt32(System.Math.Floor(dblVal));
using System;ở đầu tệp, tại thời điểm đó có thể làintVal = Convert.ToInt32(Math.Floor(dblVal));
usingchỉ thị.
nếu bạn sử dụng cast, nghĩa là, (int)SomeDoublebạn sẽ cắt bớt phần phân số. Đó là, nếu SomeDoublelà 4,9999, kết quả sẽ là 4, chứ không phải 5. Chuyển đổi sang int không làm tròn số. Nếu bạn muốn làm tròn sử dụngMath.Round
Vâng, tại sao không?
double someDouble = 12323.2;
int someInt = (int)someDouble;
Sử dụng Convertlớp cũng hoạt động tốt.
int someOtherInt = Convert.ToInt32(someDouble);
Convert.ToInt32 là cách tốt nhất để chuyển đổi
Cách tốt nhất là sử dụng đơn giản Convert.ToInt32 . Nó là nhanh và cũng làm tròn chính xác.
Tại sao làm cho nó phức tạp hơn?
Đây là một ví dụ đầy đủ
class Example
{
public static void Main()
{
double x, y;
int i;
x = 10.0;
y = 3.0;
// cast double to int, fractional component lost (Line to be replaced)
i = (int) (x / y);
Console.WriteLine("Integer outcome of x / y: " + i);
}
}
Nếu bạn muốn làm tròn số đến số nguyên gần hơn, hãy làm như sau:
i = (int) Math.Round(x / y); // Line replaced
Tôi nghĩ rằng cách tốt nhất là Convert.ToInt32.
Cách của tôi là:
- Convert.ToInt32(double_value)
- (int)double_value
- Int32.Parse(double_value.ToString());
double_value = 0.1