| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/08/2010 15:42:53
|
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 "
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/08/2010 15:56:50
|
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
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/08/2010 17:13:58
|
frankwco
Thread.start()
![[Avatar]](/images/avatar/84e06f3c71f657723173b3ddfe08fd8c.jpg)
Membro desde: 28/08/2008 23:00:47
Mensagens: 43
Offline
|
pra ficar mais claro o seu codigo use a tag [code]
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/08/2010 17:54:19
|
Rafael Nunes
Moderador
![[Avatar]](/images/avatar/d072677d210ac4c03ba046120f0802ec.png)
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
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/08/2010 21:48:05
|
jakefrog
GUJ Expert
![[Avatar]](/images/avatar/6e2400ec18b6f1952f1053c65df7a8b6.png)
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! |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/08/2010 23:43:30
|
Paulo Silveira
Administrador
![[Avatar]](/images/avatar/a87ff679a2f3e71d9181a67b7542122c.jpg)
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
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/08/2010 04:56:03
|
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/08/2010 06:42:12
|
blackfalcon
JavaEvangelist
![[Avatar]](/images/avatar/67cba9ae9e4555079d1751ea3d187147.jpg)
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
|
|
|
 |
|
|