2010-09-14 29 views
6

tengo un valor entero:¿Cómo puedo convertir el valor entero en valor decimal?

Integer value = 56472201; 

Cuando el valor puede ser positivo o negativo.

Cuando divido el valor por 1000000, quiero este resultado en el formulario 56.472201 pero en su lugar me da solo el cociente. ¿Cómo puedo obtener los valores de cociente y resto?

+2

Qué idioma está trabajando en? – sje397

+0

¿Para qué se utiliza el resultado? ¿Desea simplemente mostrarlo, o desea hacer otros cálculos (y con qué precisión)? – barjak

Respuesta

6

fundido que flote y luego hacerlo:

int i = 56472201; 

float j = ((float) i)/1000000.0 

Editar: Debido a la precisión (necesaria en su caso), el uso doble. También como se ha señalado por Konrad Rudolph, sin necesidad de conversión explícita:

double j = i/1000000.0; 
+2

Estrictamente hablando, ese reparto es redundante cuando se divide por un 'float' de todos modos (o en su caso' double' para casi todos los idiomas). –

+0

Buen punto, solo soy un programador inseguro/paranoico (¡asustado de strtok!) – lalli

+0

Gracias guyes Trabaja con @Konrad Rudolph @lalli y @Guffa Gracias por las soluciones – jimmy

0

Hay que convertir el valor a un tipo de coma flotante en primer lugar, de lo contrario se le hace una división entera.

Ejemplo en C#:

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

(en realidad no es necesario el reparto de este código, que dividir por un número de coma flotante proyectará el valor para coincidir, pero es más clara para escribir el reparto en el código ya que eso es lo que realmente sucede.)

1

Si divide un int por un doble, se le dejará un doble resultado como se ilustra en esta prueba unitaria.

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

1e6d se 1 * 10^6 representado como un doble

Cuestiones relacionadas