Gå til innhold

Konvertering double -> String med avrunding 2 des.


Anbefalte innlegg

Holder på å lære java (INF1000, FAM, UiO. Det kryr vist av oss her på forumet for tiden :) ) Bruker easyIO, men for å få det litt pent, har jeg skrevet:

 

 display.outln ("Gjennomsnittlig nedbør på regndager:\n\t"
   + String.valueOf (meanRainRainDays)	+ " mm");

 

Vet at "String.valueOf (meanRainRainDays)" egentlig er nødvendig - den blir uansett konvertert til en String. Nå var poenget å konvertere den til en streng med *2* desimaler, ikke 50, *før* jeg setter den inn i programmet. Hvordan gjør jeg dette? Noe i java.Math kanskje?

 

Vet jeg kan skrive noe sånnt:

display.out ("Gjennomsnittlig nedbør på regndager:\n\t");
display.out (meanRainRainDays, 2);
display.outln (" mm");

Lenke til kommentar
Videoannonse
Annonse

Funka dårlig:

a -cp ~/java/classpath/easyIO.jar:.
RegnMaiJuni-Oblig1.java:68: cannot find symbol
symbol  : method round(double,int)
location: class RegnMaiJuni
                               + round (meanRainRainDays, 2)   + " mm");
                                 ^

 

og:

RegnMaiJuni-Oblig1.java:68: cannot find symbol
symbol  : method round(double,int)
location: class java.lang.Math
                               + Math.round (meanRainRainDays, 2)      + " mm");

 

Dette er fra SUN sin compiler(ssh til klodrik), IBM sin (som jeg har hjemme IOM at den fulgte med fedora, og "bare funka"...) sier:

1. ERROR in RegnMaiJuni-Oblig1.java
(at line 68)
       + round (meanRainRainDays, 2)   + " mm");
         ^^^^^
The method round(double, int) is undefined for the type RegnMaiJuni

og:

----------
1. ERROR in RegnMaiJuni-Oblig1.java
(at line 68)
       + Math.round (meanRainRainDays, 2)      + " mm");
              ^^^^^
The method round(float) in the type Math is not applicable for the arguments (double, int)

 

Er det ett eller annet idiotisk jeg gjør galt?

Lenke til kommentar
Holder på å lære java (INF1000, FAM, UiO. Det kryr vist av oss her på forumet for tiden :) ) Bruker easyIO, men for å få det litt pent, har jeg skrevet:

 

 display.outln ("Gjennomsnittlig nedbør på regndager:\n\t"
   + String.valueOf (meanRainRainDays)	+ " mm");

 

Vet at "String.valueOf (meanRainRainDays)" egentlig er nødvendig - den blir uansett konvertert til en String. Nå var poenget å konvertere den til en streng med *2* desimaler, ikke 50, *før* jeg setter den inn i programmet. Hvordan gjør jeg dette? Noe i java.Math kanskje?

 

Vet jeg kan skrive noe sånnt:

display.out ("Gjennomsnittlig nedbør på regndager:\n\t");
display.out (meanRainRainDays, 2);
display.outln (" mm");

Det enkleste er å bruke java.text.DecimalFormat, på følgende måte:

 

import java.text.DecimalFormat;

...

double pi = 3.14159;
DecimalFormat df = new DecimalFormat("0.00");
System.out.println(df.format(pi));

 

Javas API inneholder en del slike formateringsklasser, som f.eks. SimpleDateFormat, etc. Geniale klasser og enkle å bruke.

 

DecimalFormat bruker ROUND_HALF_EVEN når den avrunder.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...