Βοήθεια στη Fortran

Άβαταρ μέλους
Σ. Διονύσης
Δημοσιεύσεις: 190
Εγγραφή: Τρί Φεβ 19, 2013 5:17 pm
Τοποθεσία: Milky Way,Orion Arm, Solar System, 3rd Planet(Earth)

Βοήθεια στη Fortran

#1

Μη αναγνωσμένη δημοσίευση από Σ. Διονύσης » Κυρ Μαρ 09, 2014 1:24 am

Έφτιαξα ένα απλό πρόγραμμα σε Fortran 90/95 το οποίο βρίσκει το μεγαλύτερο στοιχείο ενός συνόλου:

program maximum_value_of_set
integer n
real b, maxvalue
real, allocatable, dimension (:) :: A
print *, "Give the dimension of the vector:"
read *, n
allocate (A(n))
do i=1,n
read *, A(i)
enddo
b= maxvalue (n,A)
print *,b
end


real function maxvalue (n,A)
integer, intent (in) :: n
real, intent (in), dimension (n) :: A
integer i
maxvalue=A(1)
do i=2,n
if (A(i)>maxvalue) maxvalue=A(i)
enddo
end function

Όταν το τρέχω όμως και βάζω διάφορες τιμές π.χ 5, 7.5, 3, 1, 7,51 αντί να βγάλει το 7,51 μου βγάζει 7,51000023
Δηλαδή σε κάθε αποτέλεσμα προσθέτει το +0.00000023
Από τι μπορεί να οφείλεται αυτό. Μήπως είναι το format;
Αν μπορεί να βοηθήσει κάποιος θα το εκτιμούσα πολύ.
τελευταία επεξεργασία από matha σε Κυρ Μαρ 09, 2014 1:26 am, έχει επεξεργασθεί 1 φορά συνολικά.
Λόγος: Διόρθωση LaTeX.


My System:
Case:CoolerMaster HAF-X
CPU:i7-2600k @5.0GHz @1.43v
RAM:Corsair Dominator GT 32GB 2133MHz
GPU:ATI RADEON HD6990 4GB @950MHz @1450MHz
Mobo:GIGABYTE Z68X-UD7-B3
SSD:Corsair Force GS 240GB
HDD:WD Caviar Black 2TB
CPU cooler:CoolerMaster V10
Headphones:V-moda M100
Audio interface:RME Babyface
nightchild
Δημοσιεύσεις: 29
Εγγραφή: Κυρ Δεκ 21, 2008 7:36 pm

Re: Βοήθεια στη Fortran

#2

Μη αναγνωσμένη δημοσίευση από nightchild » Κυρ Μαρ 09, 2014 2:23 pm

Διονύση αυτό το +0.0000023 στο βγάζει οτι νούμερα και να δώσεις στην αρχή ή μονο για τα συγκεκριμμένα;

Ρωτάω γιατι ένα τέτοιο αποτέλεσμα μπορεί να οφείλεται σε σφάλμα αναπαράστασης του 7.51
οπότε το μηχανημα τον προσεγγίζει απο τον αριθμό που σου εκτυπώνει.

Αν δεν θες να εμφανίζεται μπορεις αντι της print να χρησιμοποιήσεις την print ''(f5.3)'', μεταβλητή
η οποία θα εμφανίσει τον αριθμό με 1 ψηφίο πριν την υποδιαστολή και 3 μετά την υποδιαστολή


Τσαπαρικος Βασίλειος
Άβαταρ μέλους
Σ. Διονύσης
Δημοσιεύσεις: 190
Εγγραφή: Τρί Φεβ 19, 2013 5:17 pm
Τοποθεσία: Milky Way,Orion Arm, Solar System, 3rd Planet(Earth)

Re: Βοήθεια στη Fortran

#3

Μη αναγνωσμένη δημοσίευση από Σ. Διονύσης » Κυρ Μαρ 09, 2014 3:05 pm

Το κάνει οποιοδήποτε αριθμούς και να βάλω. Αυτό που λές είναι το format.

Το θέμα είναι ότι αν κάνεις το συγκεκριμένο format που λες ή για κάποιο συγκεκριμένο αριθμό δεκαδικών, π.χ:

b= maxvalue (n,A)
print '(F5.3)',b
end

ή όπως μου αρέσει να το γράφω για να διαβάζεται καλύτερα:

b= maxvalue (n,A)
print 1,b
1 format (f5.3)
end

τότε θα εμφανίζονται μόνο 3 δεκαδικά ψηφία. Έτσι αν θέλω ας πουμε να συγκρίνω αριθμούς με 4 δεκαδικά ψηφία π.χ τους αριθμούς: 7.5101 και 7.5102 θα έχουμε παράδοξο και θα βγάλει αποτέλεσμα 7.510

Επίσης, τώρα παρατηρώ ότι δε προσθέτει πάντα το συγκεκριμένο αριθμό που γράφω παραπάνω, αλλά μια φορά μου αφαίρεσε -0.00000011
Μήπως είναι ο compiler;


My System:
Case:CoolerMaster HAF-X
CPU:i7-2600k @5.0GHz @1.43v
RAM:Corsair Dominator GT 32GB 2133MHz
GPU:ATI RADEON HD6990 4GB @950MHz @1450MHz
Mobo:GIGABYTE Z68X-UD7-B3
SSD:Corsair Force GS 240GB
HDD:WD Caviar Black 2TB
CPU cooler:CoolerMaster V10
Headphones:V-moda M100
Audio interface:RME Babyface
Απάντηση

Επιστροφή σε “Μαθηματικά & Τεχνολογία”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 2 επισκέπτες