Έλεγχος μέχρι και 6ου δεκαδικού ψηφίου

Συζητήσεις σχετικές με την Delphi και την πρόγονη της Pascal

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
Running_dap
Δημοσιεύσεις: 7
Εγγραφή: 17 Δεκ 2008 18:11
Τοποθεσία: Αθήνα

Έλεγχος μέχρι και 6ου δεκαδικού ψηφίου

Δημοσίευση από Running_dap » 17 Δεκ 2008 18:18

Καλησπέρα σας σε όλους! Νέος στο forum γι'αυτό σας χαιρετάω όλους! :D
Γνωρίζει κανείς πως ,στην γλώσσα Pascal, μπορώ να κάνω έλεγχο 2 Integer μεταβλητών μέχρι και του 6 δεκαδικού τους ψηφίου; Δηλαδή πχ:

x= 2.00000595
και
z= 2.00000523
τότε οι αριθμοί είναι ίσοι.

Άβαταρ μέλους
EneMe
Super Moderator
Δημοσιεύσεις: 13307
Εγγραφή: 09 Ιούλ 2002 13:29
Τοποθεσία: Στο κέντρο της Ελλάδας!
Επικοινωνία:

Έλεγχος μέχρι και 6ου δεκαδικού ψηφίου

Δημοσίευση από EneMe » 17 Δεκ 2008 18:31

Μια πρόχειρη λύση, ανεξαρτήτως γλώσσας:

Τους πολλαπλασιάζεις με το 10^6 (μεταφέρεις την υποδιαστολή μετά το τελευταίο ψηφίο που σε ενδιαφέρει) και τους ακεραιοποιείς (πετάς ότι είναι μετά).
Μετά ελέγχεις αν η διαφορά τους είναι ίση με μηδέν.

;)

Άβαταρ μέλους
EneMe
Super Moderator
Δημοσιεύσεις: 13307
Εγγραφή: 09 Ιούλ 2002 13:29
Τοποθεσία: Στο κέντρο της Ελλάδας!
Επικοινωνία:

Έλεγχος μέχρι και 6ου δεκαδικού ψηφίου

Δημοσίευση από EneMe » 17 Δεκ 2008 18:37

Το παραπάνω είναι στάνταρ τρόπος!

Για να αποφύγεις την ακεραιοπόιηση γίνεται και το άλλο:
Πολλαπλασιάζεις με το 10^6 όπως παραπάνω κι ελέγχεις αν η απόλυτη διαφορά τους είναι μικρότερη από 1.

Running_dap
Δημοσιεύσεις: 7
Εγγραφή: 17 Δεκ 2008 18:11
Τοποθεσία: Αθήνα

Έλεγχος μέχρι και 6ου δεκαδικού ψηφίου

Δημοσίευση από Running_dap » 17 Δεκ 2008 18:44

EneMe έγραψε:Μια πρόχειρη λύση, ανεξαρτήτως γλώσσας:

Τους πολλαπλασιάζεις με το 10^6 (μεταφέρεις την υποδιαστολή μετά το τελευταίο ψηφίο που σε ενδιαφέρει) και τους ακεραιοποιείς (πετάς ότι είναι μετά).
Μετά ελέγχεις αν η διαφορά τους είναι ίση με μηδέν.

;)
Πώς μπορώ να "ακεραιοποιήσω"; Υπάρχει κάποια έτοιμη συνάρτηση γι'αυτό;

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Έλεγχος μέχρι και 6ου δεκαδικού ψηφίου

Δημοσίευση από dva_dev » 17 Δεκ 2008 20:13

Οι ακέραιες μεταβλητές δεν έχουν δεκαδικά, οι πραγματικές έχουν.
Για "ακεραιοποίηση" μπορείς να χρησιμοποιήσεις type casting, ή τις round, trunc

Running_dap
Δημοσιεύσεις: 7
Εγγραφή: 17 Δεκ 2008 18:11
Τοποθεσία: Αθήνα

Έλεγχος μέχρι και 6ου δεκαδικού ψηφίου

Δημοσίευση από Running_dap » 17 Δεκ 2008 21:41

ευχαριστώ πολύ για τις απαντήσεις! πραγματικά βοήθησαν! :D

Απάντηση

Επιστροφή στο “Delphi, Pascal”

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

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