Decimal en java
Que tal camaradas tengo una inquiectud muy importante aunque soy nuevo en java me gustaria saber como poder resolverlo
estoy realizando este programita en java
*/
import java.util.Scanner;
/**
*
* @author xxx
*/
public class DeterminarMayorProductoDiferenciaDivision {
static float suma, diferencia,producto,division,num1,num2;
static Scanner teclado=new Scanner (System.in);
public static void main (String... morfa){
System.out.println("Favor ingrese el primer numero");
num1=teclado.nextFloat();
System.out.println("Favor ingrese el segundo numero");
num2=teclado.nextFloat();
if (num1>num2){
suma=num1+num2;
diferencia=num1-num2;
System.out.println("La suma es "+ suma+" teniendo como diferencia "+diferencia);
} else {
producto=num1*num2;
division=num1/num2;
System.out.println("El producto de los numero es "+ producto+" y su division es "+division);
}
}
}
}
el error que me da en cuando ingreso un numero decimal como por ejemplo 1.5 el programa me explota y me sale
at java.util.Scanner.throwFor(Scanner.java:840)
at java.util.Scanner.next(Scanner.java:1461)
at java.util.Scanner.nextFloat(Scanner.java:2319)
at javayacomar.DeterminarMayorProductoDiferenciaDivision.main(D eterminarMayorProductoDiferenciaDivision.java:27)
Java Result: 1
Ahora cuando lo pongo con asi 1,5 me corre bien,osea con una coma, se que se puede resolver con un parser, per la verdad nunca lo he usado. me gustari ver un jemplito basico de como podria resolver este caso para poder poner los valores con punto
Gracias,
- Inicie sesión o regístrese para enviar comentarios
Tiene que ver por el
Tiene que ver por el "Locale" que se utiliza para hacer regionalizaciones del código.
De alguna forma tu locale por default, usa uno donde los decimales se separan por , y no por .
Lo único que tienes que hacer es usar un Locale donde si aplique el . ( como en México pro ejemplo )
En la documentación, lee la parte Localized numbers
An instance of this class is capable of scanning numbers in the standard formats as well as in the formats of the scanner's locale
Entonces lo siguiente debería de funcionar ( usa <code> y </code> opara el código) :
teclado.useLocale( new Locale("es", "MX"));
Aunqeu quizá tengas problemas cuando escribas "1,5" :P
float/double
Y si quieres cierta precisión, lee acerca de los floats y doubles... te recomiendo mejor usar BigDecimal.
Gracias mil
Gracias mejor de ahi se daña..................