Fórum Como calcular a circunferência? #567164

09/04/2009

0

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:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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...
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?
Paulo Cassiano

Paulo Cassiano

Responder

Posts

09/04/2009

Gustavo Steigert

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;
Responder

Gostei + 0

09/04/2009

Paulo Cassiano

Não adiantou, olha o erro que dá:
1
2
3
4
5
6
7
8
9
10
11
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)
O que fazer?
Responder

Gostei + 0

09/04/2009

Gustavo Steigert

Poste o código completo para analisarmos...
Responder

Gostei + 0

09/04/2009

Gabriel Millian

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:
1
2
double raio = [NUMERO];
double circunferencia = 2 * Math.PI * raio;
Em segundo lugar, para resolver o seu problema, declare todas as variáveis como sendo do tipo double. Falow
Responder

Gostei + 0

09/04/2009

Gustavo Steigert

[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:
1
2
double raio = [NUMERO];
double circunferencia = 2 * Math.PI * raio;
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.
Responder

Gostei + 0

09/04/2009

Gabriel Millian

Blz, o double é um problema terrível com toda a memória que ele consome.
1
2
3
float pi = (float)Math.PI;
float raio = 2.345f;
float circunferencia = 2 * pi * raio;
Falow
Responder

Gostei + 0

09/04/2009

Carlos Heuberger

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. []]]
Responder

Gostei + 0

09/04/2009

Carlos Heuberger

PS: a area eh pi * r * r :-)
Responder

Gostei + 0

09/04/2009

Jéferson Flores

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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));
    }
  }
Responder

Gostei + 0

12/12/2011

Osmar Martinez

Fiz assim e deu certo! [quote="pretorianobr"]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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 ) );
    }
}
Responder

Gostei + 0

13/12/2011

Ryuuji

[quote="pretorianobr"]Fiz assim e deu certo! [quote="pretorianobr"]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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 ) );
    }
}
[img]http://javafree.uol.com.br/files_user/files/1/50/D3/jackie-chan-meme.png[/img]
Responder

Gostei + 0

25/12/2011

Yoshimitsu

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.
Responder

Gostei + 0

25/12/2011

Carlos Heuberger

[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]
Responder

Gostei + 0

25/12/2011

Yoshimitsu

Foi mal! Sou novo aqui, mas hoje já aprendi duas coisas novas: editar e apagar!!!
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar