2010-09-14 51 views
6

tôi có một giá trị Integer:Làm cách nào để chuyển đổi giá trị Integer thành giá trị thập phân?

Integer value = 56472201; 

Trường hợp giá trị có thể là tích cực hay tiêu cực.

Khi tôi chia giá trị cho 1000000, tôi muốn kết quả này ở dạng 56.472201 nhưng thay vào đó nó mang lại cho tôi chỉ là thương. Làm cách nào để có thể nhận được cả giá trị thương lượng và giá trị còn lại?

+2

ngôn ngữ gì bạn đang làm việc tại? – sje397

+0

Kết quả được sử dụng để làm gì? Bạn có muốn chỉ hiển thị nó, hay bạn muốn thực hiện các tính toán khác (và với độ chính xác nào)? – barjak

Trả lời

6

cast nó nổi và sau đó làm điều đó:

int i = 56472201; 

float j = ((float) i)/1000000.0 

Edit: Do độ chính xác (cần thiết trong trường hợp của bạn), sử dụng kép. Cũng như được chỉ định bởi Konrad Rudolph, không cần đúc rõ ràng:

double j = i/1000000.0; 
+2

Nói đúng ra, phép đúc đó thừa khi bạn chia một 'float' (hoặc trong trường hợp của bạn là' double' cho hầu như tất cả các ngôn ngữ). –

+0

Điểm tốt, tôi chỉ là một lập trình viên không an toàn/hoang tưởng (sợ hãi của strtok!) – lalli

+0

cảm ơn anh chàng u Nó hoạt động với cả @Konrad Rudolph @ lalli và @Guffa Cảm ơn các giải pháp – jimmy

0

Bạn phải chuyển đổi giá trị thành loại dấu phẩy động trước, nếu không bạn sẽ thực hiện phân chia số nguyên.

Ví dụ trong C#:

int value = 56472201; 
double decimalValue = (double)value/1000000.0; 

(Dàn diễn viên thực sự là không cần thiết trong mã này, như chia bởi một số dấu chấm động sẽ bỏ giá trị cho phù hợp, nhưng nó rõ ràng hơn để viết ra các diễn viên trong mã số như vậy là những gì thực sự xảy ra.)

1

Nếu bạn chia int cho gấp đôi, bạn sẽ được để lại với kết quả kép như được minh họa bằng phép thử đơn vị này.

@Test 
public void testIntToDouble() throws Exception { 
    final int x = 56472201; 
    Assert.assertEquals(56.472201, x/1e6d); 
} 

1e6d được 1 * 10^6 biểu diễn như một đôi

Các vấn đề liên quan