2010-09-14 12 views
6

mam Wartość całkowita:Jak przekonwertować wartość całkowitą na wartość dziesiętną?

Integer value = 56472201; 

Jeżeli wartość może być dodatnia lub ujemna.

Kiedy dzielę wartość przez 1000000, chcę ten wynik w postaci 56.472201, ale zamiast tego daje mi tylko iloraz. W jaki sposób mogę uzyskać wartości ilorazu i pozostałej wartości?

+2

jakim języku pracujesz w? – sje397

+0

Do czego służy wynik? Czy chcesz go wyświetlić, czy też chcesz wykonać inne obliczenia (iz jaką dokładnością)? – barjak

Odpowiedz

6

cast on unosić się, a następnie zrobić:

int i = 56472201; 

float j = ((float) i)/1000000.0 

Edit: Ze względu na dokładność (potrzebne w danym przypadku), należy dwukrotnie. Także wskazanych przez Konrad Rudolph, bez konieczności wyraźnego odlewania:

double j = i/1000000.0; 
+2

Ściśle mówiąc, ta obsada jest zbędna, kiedy mimo wszystko podzielisz ją na "float" (lub w twoim przypadku "double" dla prawie wszystkich języków). –

+0

Dobra sprawa, jestem po prostu niezabezpieczonym/paranoicznym programistą (boję się strtok!) – lalli

+0

dziękuję u guyes Działa zarówno z @Konradem Rudolphem @lallim, jak i @Guffą. Dzięki za rozwiązania – jimmy

0

trzeba konwertować wartości do pływającej typu pierwszego punktu, w przeciwnym razie będzie robi podział całkowitej.

Przykład w języku C#:

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

(Obsada nie jest rzeczywiście potrzebne w tym kodzie, jak podzielenie przez liczbę zmiennoprzecinkową rzuci wartość pasujące, ale jaśniejsze wypisać oddanych w kod, ponieważ tak właśnie się dzieje.)

1

Jeśli podzielisz int przez podwójne, otrzymasz podwójny wynik, co ilustruje ten test jednostkowy.

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

1e6d jest 1 * 10^6 reprezentowane podwójnym

Powiązane problemy