2010-09-14 5 views
6

j'ai une valeur entière:Comment convertir une valeur entière en valeur décimale?

Integer value = 56472201; 

Lorsque la valeur pourrait être positive ou négative.

Lorsque je divise la valeur par 1000000, je veux ce résultat sous la forme 56.472201 mais à la place il me donne juste le quotient. Comment puis-je obtenir les valeurs du quotient et du reste?

+2

Quelle langue travaillez-vous? – sje397

+0

Quel est le résultat? Voulez-vous simplement l'afficher, ou voulez-vous faire d'autres calculs (et avec quelle précision)? – barjak

Répondre

6

fonte à flotter, puis le faire:

int i = 56472201; 

float j = ((float) i)/1000000.0 

Edit: En raison de la précision (nécessaire dans votre cas), utiliser le double. Aussi comme le souligne Konrad Rudolph, pas besoin de coulée explicite:

double j = i/1000000.0; 
+2

Strictement parlant, cette distribution est redondante lorsque vous divisez par un 'float 'de toute façon (ou dans votre cas' double' pour presque toutes les langues). –

+0

Bon point, je suis juste un programmeur insécurisé/paranoïaque (effrayé de strtok!) – lalli

+0

merci u guyes Cela fonctionne à la fois avec @Konrad Rudolph @lalli et @Guffa Merci pour les solutions – jimmy

0

Vous devez convertir la valeur à un type à virgule flottante en premier, sinon vous allez faire une division entière.

Exemple en C#:

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

(Le casting est en fait pas nécessaire dans ce code, comme la division par un nombre à virgule flottante jetteront la valeur pour correspondre, mais il est plus clair d'écrire le casting dans la code comme cela est ce qui se passe réellement.)

1

Si vous divisez un int par un double, il vous restera un double résultat comme illustré par ce test unitaire.

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

1e6d est 1 * 10^6 représenté comme un double

Questions connexes