Mnożenie Int i double

0

Witam! Zaczynam zabawę z Javą i mam następujący problem: piszę prog. obliczający układ równań różniczkowych i jest mi potrzebne np: 1000 kroków od t=0.001 do t=1.

for (int i=1; i<=1000; i++){
double h = 0.001;
double t = i*h;

prog liczy wszystko fajnie ale przy wyświetlaniu macierzy wyników kolumna t wygląda następująco:

0.0010
0.0020
0.0030
0.0040
0.0050
0.0060
0.0070
0.0080
0.009000000000000001
0.01
0.011
0.012
0.013000000000000001
0.014
0.015
0.016
0.017
0.018000000000000002
0.019
0.02
....
0.341
0.342
0.343
0.34400000000000003
0.34500000000000003
0.34600000000000003
0.34700000000000003
0.34800000000000003
0.34900000000000003
0.35000000000000003
0.35100000000000003
0.352
0.353
0.354
....

Co moge zrobić żeby pozbyć się tych "ogonów" [???] Czy to wina tego że pomnożyłem Int i double?? W obliczeniach to raczej nie przeszkadza, ale wygląda nieprofesjonalnie ;-)
Z góry dziękuję za pomoc!

PS: szukałem na forum i googlałem dobre 2h ale nic mi się nie udało znaleźć w tym temacie

0

Rzecz leży w naturze liczb double (zmiennoprzecinkowych). Radzę po prostu zadbać o ograniczenie dokładności przy wyświetlaniu.

0

Ucinanie do 3 miejsca po przecinku:

 myNumber = -1234.56789;
NumberFormat form = NumberFormat.getInstance(); 
form.setMaximumFractionDigits(3);
System.out.println(form.format(myNumber));
0

Dziękuję za odpowiedzi. Załatwiłem to w ten sposób może się innemu początkującemu przyda :-)

for (int i=1; i<=1000; i++){
double h = 0.001;
double t = (Math.floor(1000ih))/1000;

i mam t zaokrąglone do 3 miejsc po przecinku.

1 użytkowników online, w tym zalogowanych: 0, gości: 1