Ποια είναι η διαφορά μεταξύ 2 και 2,0;


Απάντηση 1:

Μαθηματικά, δεν υπάρχει καμία διαφορά καθόλου. Το 2 είναι μέλος του συνόλου των ακεραίων, αλλά έτσι είναι 2.0! Για έναν μαθηματικό, το "2.0" είναι πλήρως επιτρεπτό, αλλά απλά ένας πιο λεπτομερής τρόπος γραφής "2".

Αλλά, όπως έλεγαν μερικές απαντήσεις εδώ, το "2.0" μπορεί να υποδηλώνει σε έναν μηχανικό ότι η μέτρηση είναι ακριβής στο πλησιέστερο 1 / 10ο, ενώ το "2" μπορεί να είναι απλώς ακριβές στον πλησιέστερο ακέραιο αριθμό.

Η σαφέστερη διαφορά, πολύ μακριά, βρίσκεται στις γλώσσες προγραμματισμού όπως C και C ++, καθώς και σε άλλες γλώσσες ...

  • Το "2" είναι ένας ακέραιος αριθμός και αποθηκεύεται ως τέτοιος. Αυτό που βλέπετε είναι αυτό που παίρνετε - αν και το σχήμα συμπλήρωσης δύο μπορεί να χρησιμοποιηθεί για αρνητικούς αριθμούς. Αλλά το "2" αποθηκεύεται ως 0000 0000 0000 00010 (στην περίπτωση ακέραιων αριθμών 16 bit). Το "2.0" είναι ένας αριθμός κινητής υποδιαστολής ο οποίος, όταν αξιολογείται μαθηματικά, συμβαίνει να έχει την ίδια τιμή με το "2". Αλλά αποθηκεύεται τόσο διαφορετικά ώστε το μοτίβο δυαδικών ψηφίων δεν φαίνεται απομακρυσμένα το ίδιο. Συνεπώς, κατά την ανάμειξη ακέραιων αριθμών και κυμαινόμενου σημείου, το πρόγραμμα πρέπει να καλέσει ρουτίνες μετατροπής. Αυτό είναι κρυφό από εσάς, αλλά κάνει το πρόγραμμα πιο αργό.

Τώρα, μπορείτε να αναρωτηθείτε: Ποια είναι η σημασία για την εγγραφή προγραμμάτων; Δεν μπορώ να αγνοήσω αυτό το ζήτημα, αφήνοντας τον μεταγλωττιστή να καταλάβει ακριβώς τι θέλω να κάνω, για παράδειγμα στην έκφραση:

Ν = 1 + 2,0

Ορισμένες γλώσσες, όπως το BASIC, θα μπορούσαν να το επιτρέψουν αυτό, προκαλώντας μια τιμή intger 3 να αποθηκευτεί στο N, και να μην κάνει καμία αναστάτωση. Αλλά C / C + + είναι πολύ πιο αυστηρές για τους τύπους. Σε C ή C ++, το "2.0" είναι ένας αριθμός κινητής υποδιαστολής και ως εκ τούτου - παρόλο που στην περίπτωση αυτή δεν υπάρχει κλασματικό τμήμα - η γλώσσα θα εκδώσει προειδοποίηση για πιθανή απώλεια δεδομένων. Μπορείτε να καταργήσετε αυτήν την προειδοποίηση ως εξής:

N = 1 + (int) 2,0.

Αλλά ένας πολύ ευκολότερος και πιο αποτελεσματικός τρόπος αποφυγής του προειδοποιητικού μηνύματος είναι απλώς να κολλήσετε σε ακέραιους αριθμούς όταν κάνετε ακέραια μαθηματικά και κάθε καλό εγχειρίδιο προγραμματισμού θα το συνιστούσε έντονα.

Ν = 1 + 2.


Απάντηση 2:

Η διαφορά στο κείμενο είναι ".0" αλλά είναι ο ίδιος αριθμός. Ωστόσο, σε ορισμένες γλώσσες υπολογιστών όπου γίνεται η σιωπηρή μετατροπή, η τιμή 2 θα μετατραπεί σε ακέραιο και η τιμή 2.0 θα μετατραπεί σε ένα float. Για παράδειγμα, στο T-SQL (SQL Server SQL) αυτές οι δύο επιλογές θα επιστρέψουν διαφορετικά αποτελέσματα.

SELECT 1/2

επιστρέφει 0

SELECT 1 / 2.0

επιστρέφει 0,5


Απάντηση 3:

Η διαφορά στο κείμενο είναι ".0" αλλά είναι ο ίδιος αριθμός. Ωστόσο, σε ορισμένες γλώσσες υπολογιστών όπου γίνεται η σιωπηρή μετατροπή, η τιμή 2 θα μετατραπεί σε ακέραιο και η τιμή 2.0 θα μετατραπεί σε ένα float. Για παράδειγμα, στο T-SQL (SQL Server SQL) αυτές οι δύο επιλογές θα επιστρέψουν διαφορετικά αποτελέσματα.

SELECT 1/2

επιστρέφει 0

SELECT 1 / 2.0

επιστρέφει 0,5


Απάντηση 4:

Η διαφορά στο κείμενο είναι ".0" αλλά είναι ο ίδιος αριθμός. Ωστόσο, σε ορισμένες γλώσσες υπολογιστών όπου γίνεται η σιωπηρή μετατροπή, η τιμή 2 θα μετατραπεί σε ακέραιο και η τιμή 2.0 θα μετατραπεί σε ένα float. Για παράδειγμα, στο T-SQL (SQL Server SQL) αυτές οι δύο επιλογές θα επιστρέψουν διαφορετικά αποτελέσματα.

SELECT 1/2

επιστρέφει 0

SELECT 1 / 2.0

επιστρέφει 0,5