Java não soma corretamente  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
rdarski
Smalltalk

Membro desde: 13/08/2010 15:36:20
Mensagens: 1
Offline

Java basico somas não funcionam (java sum float or double)

Veja o resultados que tive com somas simples em java

0.0
2.0
==============
short v1=0
int v2=1
long v3=2
double v5=10.1001
double v6=1.9999
float v51=10.1001
float v61=1.9999
Double 1 v1+v2+v3+v5+v6 =15.1 <------- certo
Float 1 v1+v2+v3+v51+v61 =15.099999 <------- errado
==============
short v1=1
int v2=2
long v3=3
double v5=10.1001
double v6=1.9999
float v51=10.1001
float v61=1.9999
Double 2 v1+v2+v3+v5+v6 = 18.099999999999998 <---- errado
Float 2 v1+v2+v3+v51+v61 =18.1 <----- certo



public class teste {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub

//short v1=0;
short v1=0;
int v2=1;
int c1=v1*v2;
Integer c1a=new Integer(c1);
System.out.println(c1a.floatValue());
long v3=2;
//long v3=2;
long c2=v1+v2*v3;
Long c2a=new Long(c2);
System.out.println(c2a.floatValue());

//float v4=4.33333f;
//float c3=v1+v2+v3+v4;

double v5=10.1001d;
double v6=1.9999d;
float v51=10.1001f;
float v61=1.9999f;

System.out.println("==============");
System.out.println("short v1="+v1);
System.out.println("int v2="+v2);
System.out.println("long v3="+v3);
System.out.println("double v5="+v5);
System.out.println("double v6="+v6);
System.out.println("float v51="+v51);
System.out.println("float v61="+v61);
double c4=v1+v2+v3+v5+v6;
System.out.println("Double 1 v1+v2+v3+v5+v6 ="+c4);


float c41=v1+v2+v3+v51+v61;
System.out.println("Float 1 v1+v2+v3+v51+v61 ="+c41);
v1=1;
v2=2;
v3=3;
//float v4=4.33333f;
//float c3=v1+v2+v3+v4;
//System.out.println(c3);

System.out.println("==============");
System.out.println("short v1="+v1);
System.out.println("int v2="+v2);
System.out.println("long v3="+v3);
System.out.println("double v5="+v5);
System.out.println("double v6="+v6);
System.out.println("float v51="+v51);
System.out.println("float v61="+v61);


c4=v1+v2+v3+v5+v6;
System.out.println("Double 2 v1+v2+v3+v5+v6 = "+c4);

c41=v1+v2+v3+v51+v61;
System.out.println("Float 2 v1+v2+v3+v51+v61 ="+c41);

}

}


Cfe documentação:
"The following 19 specific conversions on primitive types are called the widening primitive conversions:

byte to short, int, long, float, or double
short to int, long, float, or double
char to int, long, float, or double
int to long, float, or double
long to float or double
float to double "



duducordeiro_
JavaChild

Membro desde: 15/10/2009 21:50:12
Mensagens: 114
Offline

primeiro leia e entenda cada tipo de variável e pq cada uma é double e float e depois afirme
frankwco
Thread.start()
[Avatar]

Membro desde: 28/08/2008 23:00:47
Mensagens: 43
Offline

pra ficar mais claro o seu codigo use a tag [code]
[Email] [MSN]
Rafael Nunes
Moderador
[Avatar]

Membro desde: 09/10/2003 13:41:06
Mensagens: 2890
Localização: sao bernardo do campo
Offline

Java soma certo, você é quem está usando tipos de dados errados.
Se for fazer operações que necessitam de precisão decimal, use BigDecimal ao invés de double

------------------------------------------------------------------
"Think different? I'd be happy if most people would just think..."

http://www.yaw.com.br
http://twitter.com/rafanunes
http://twitter.com/youandwe
[Email]
jakefrog
GUJ Expert
[Avatar]

Membro desde: 22/01/2007 22:00:53
Mensagens: 4181
Offline

Responda essa pergunta, qual a diferença entre float e double?

Com isso vc irá conseguir responder a sua questão.

Meu blog sobre java uaiHebert.com
Conceitos OO - Diga, não pergunte!, Lei de Demeter
TDD Primeiros Passos, JUnit com HSQLDB, JPA e Hibernate, Cobertura de testes com JUnit Ant e Emma, Cobrindo seus testes com Cobertura, JUnit, HSQLDB, JPA
Código Limpo: Partes: 01,02,03,04,05
Web/JSF - Criando um WebServer, Tratando Exceções, Autenticação de Usuários (Filter/Servlet), JSF - Hello World, AutoComplete, JSF: Converter e Bean Auto Complete, Validação de Login de Usuário com JSF e JAAS, JSF Exibindo Objeto e Mensagens após Redirect, JSF Exemplos Simples com Ajax, JSF Parametros por Get Request RESTFullAplicação Web Completa JSF EJB JPA JAAS, Lazy JSF Datatable Pagination (Primefaces)
Design Pattern - Strategy, Design Pattern - Observer (Parte 01), Design Pattern - Observer (Parte 02)
Business (JPA)- Hibernate 3 com JPA 2, Create schema script: Ant, Hibernate 3 e JPA 2, TableGenerator Chave Primária Simples, SequenceGenerator,Chave Primária Composta, Mapeando Datas (Date) e Enum, Mapeando Duas Tabelas em uma Classe, @OneToOne Unidirecional e Bidirecional, @OneToMany e @ManyToOne Unidirecional e Bidirecional, @ManyToMany Unidirecional e Bidirecional, Ordernando listas e utilizando Map como atributo mapeado,Uma tabela por herança, JPA Uma Classe por Sub-Classe, JPA Consultas e Dicas, [HOT]Quatro soluções para LazyInitializationException[HOT]

SCJP(1.6 - Ingles - 29/12/2009)
SCWCD(1.5 - Ingles - 30/06/2010)

Vamos em frente que atrás vem gente!
Paulo Silveira
Administrador
[Avatar]

Membro desde: 07/08/2002 18:38:50
Mensagens: 4204
Localização: São Paulo
Offline

ola

coloquei aqui uma explicacao detalhada pra isso:
http://blog.caelum.com.br/2010/07/15/arredondamento-no-java-do-double-ao-bigdecimal/

http://blog.caelum.com.br twitter: @paulo_caelum


[Email] [WWW]
sulito
Virtual Machine Man

Membro desde: 23/11/2009 07:15:59
Mensagens: 608
Offline

VIAJASTE
exageraste no nome do topico eu assustei com o nome do topico

LPI-101
blackfalcon
JavaEvangelist
[Avatar]

Membro desde: 01/04/2008 21:08:28
Mensagens: 347
Offline

Bem, somar ele soma certo sim, mas pra double existe mesmo alguns erros quando se executa algumas operações, para isso deve-se utilizar o BigDecimal.

Abraços
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team