Como calcular a circunferência?
Salve!
Preciso calcular os valores de uma circunferência:
[b]1)[/b] Fórmula da circunferência -> (2 * pi * r); e
[b]2)[/b] Fórmula da área -> (pi ao quadrado);
Vejam como eu codifiquei:
Entretanto, recebi do compilador um erro: [b]... possible loss of precision
found : double required: float pi = 3.14159... [/b]
O que há de errado com este código?
import java.util.Scanner; public class Circunferencia { public static void main (String args[]) { Scanner input = new Scanner (System.in); int raio; float diametro; float circunferencia; float area; float pi; pi = 3.14159; System.out.print ("Digite o valor do raio: "); raio = input.nextInt(); System.out.printf ("O diamentro e: %d\n", (2 * raio)); System.out.printf ("A circunferencia e: %d\n", (2 * pi * raio)); System.out.printf ("A area e: %d\n", (pi * pi)); // E assim por diante...

Paulo Cassiano
Curtidas 0
Respostas

Gustavo Steigert
09/04/2009
O Java trata números decimais como double, por padrão.
Logo, na atribuição "pi = 3.14159;" você está tentando colocar um double dentro de um float. Esse é o motivo do erro...
Pra resolver isso, apenas coloque um "f" na frente do decimal, ficando assim: pi = 3.14159f;
GOSTEI 0

Paulo Cassiano
09/04/2009
Não adiantou, olha o erro que dá:
O que fazer?
Digite o valor do raio: 2 O diamentro e: Exception in thread "main" java.util.IllegalFormatConversionExcep tion: f != java.lang.Integer at java.util.Formatter$FormatSpecifier.failConversion(Formatter.java:397 8) at java.util.Formatter$FormatSpecifier.printFloat(Formatter.java:2718) at java.util.Formatter$FormatSpecifier.print(Formatter.java:2664) at java.util.Formatter.format(Formatter.java:2430) at java.io.PrintStream.format(PrintStream.java:899) at java.io.PrintStream.printf(PrintStream.java:800) at Pag55e228.main(Pag55e228.java:24)
GOSTEI 0

Gustavo Steigert
09/04/2009
Poste o código completo para analisarmos...
GOSTEI 0

Gabriel Millian
09/04/2009
Em primeiro lugar, não crie uma variável para armazenar o valor de PI. Ela já existe dentro de uma classe chamada Math, então toda vez que você precisar de PI, use por exemplo:
Em segundo lugar, para resolver o seu problema, declare todas as variáveis como sendo do tipo double.
Falow
double raio = [NUMERO]; double circunferencia = 2 * Math.PI * raio;
GOSTEI 0

Gustavo Steigert
09/04/2009
[quote="gabrielpl"]Em primeiro lugar, não crie uma variável para armazenar o valor de PI. Ela já existe dentro de uma classe chamada Math, então toda vez que você precisar de PI, use por exemplo:
Em segundo lugar, para resolver o seu problema, declare todas as variáveis como sendo do tipo double.
Falow
Isso corrigiria o problema, mas se fosse pra pensar assim nem existiria float. O double possui 64 bits de precisão, portanto ocupa o dobro de memória de um float.
double raio = [NUMERO]; double circunferencia = 2 * Math.PI * raio;
GOSTEI 0

Gabriel Millian
09/04/2009
Blz, o double é um problema terrível com toda a memória que ele consome.
Falow
float pi = (float)Math.PI; float raio = 2.345f; float circunferencia = 2 * pi * raio;
GOSTEI 0

Carlos Heuberger
09/04/2009
Oi,
voce esta "tentando" mostrar o resultado usando %d com um valor float,
acho que assim nao funciona. Se nao me engano, %d eh para numeros inteiros (int). De uma olhada no manual para ver o formato usado para floats.
[]]]
GOSTEI 0

Carlos Heuberger
09/04/2009
PS: a area eh pi * r * r
:-)
GOSTEI 0

Jéferson Flores
09/04/2009
import java.util.Scanner; public class Circunferencia { public static void main (String args[]) { Scanner input = new Scanner(System.in); int raio; double diametro; double circunferencia; double area; System.out.print ("Digite o valor do raio: "); raio = input.nextInt(); System.out.printf ("Diamentro: %d\n", (2 * raio)); System.out.printf ("Circunferencia: %.2f\n", ((2 * Math.PI) * raio)); System.out.printf ("Area: %f\n", Math.pow(Math.PI, 2)); } }
GOSTEI 0

Osmar Martinez
09/04/2009
Fiz assim e deu certo!
[quote="pretorianobr"]
import java.util.Scanner; public class Circunferencia { public static void main( String[] args ) { Scanner input = new Scanner( System.in ); int raio; float diametro; float circunferencia; float area; System.out.print( "Digite o valor o raio: " ); raio = input.nextInt(); System.out.printf( "O diamentro é: %d\n", ( 2 * raio ) ); System.out.printf( "A circunferência é: %.2f\n", ( 2 * Math.PI * raio ) ); System.out.printf( "A área é: %.2f\n", ( Math.PI * raio * raio ) ); } }
GOSTEI 0

Ryuuji
09/04/2009
[quote="pretorianobr"]Fiz assim e deu certo!
[quote="pretorianobr"]
import java.util.Scanner; public class Circunferencia { public static void main( String[] args ) { Scanner input = new Scanner( System.in ); int raio; float diametro; float circunferencia; float area; System.out.print( "Digite o valor o raio: " ); raio = input.nextInt(); System.out.printf( "O diamentro é: %d\n", ( 2 * raio ) ); System.out.printf( "A circunferência é: %.2f\n", ( 2 * Math.PI * raio ) ); System.out.printf( "A área é: %.2f\n", ( Math.PI * raio * raio ) ); } }
GOSTEI 0

Yoshimitsu
09/04/2009
Fiz esse programa no NetBeans quando tava começando.
Vê se é o que você precisa, que eu mando o código.
Ele calcula circunferência, área, diâmetro e raio.
GOSTEI 0

Carlos Heuberger
09/04/2009
[quote="Yoshimitsu"]Postei repetido, achei que não tivesse criado.
mals
[quote="[b]apagar.jpg[/b]"]
[img]http://javafree.uol.com.br/files_user/files/4/60/B9/apagar.jpg[/img]
GOSTEI 0

Yoshimitsu
09/04/2009
Foi mal! Sou novo aqui, mas hoje já aprendi duas coisas novas: editar e apagar!!!
GOSTEI 0