Cách tốt nhất để chuyển đổi một double
thành một là int
gì? Có nên sử dụng dàn diễn viên?
etc.
:)
Cách tốt nhất để chuyển đổi một double
thành một là int
gì? 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.Floor
vv - 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 int
nhỏ hơn nhiều so với phạm vi double
. Một dàn diễn viên từ double
đến int
sẽ không ném một ngoại lệ nếu giá trị là nằm ngoài phạm vi của int
trong 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.
int
luô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));
using
chỉ thị.
nếu bạn sử dụng cast, nghĩa là, (int)SomeDouble
bạn sẽ cắt bớt phần phân số. Đó là, nếu SomeDouble
là 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 Convert
lớ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