Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

δεκαδικοί αριθμοί

Îåêßíçóå áðü ôï ìÝëïò PsySpooky. Τελευταία δημοσίευση από το μέλος PsySpooky στις 29-05-2007, 23:18. Υπάρχουν 9 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  28-05-2007, 17:59 32279

    δεκαδικοί αριθμοί

    καλησπέρα,

    έχω κάνει 2 textbox που όταν ο χρήστης πατά το btn ok! πολλαπλασιάζει του αριθμούς που έχει δώσει ο χρήστης στα 2 textboxes και δείχνει το αποτέλεσμα σε ένα message box.
    όμως τα textboxes δεν πέρνουν δεκαδικούς αριθμούς!, δοκίμασα γράφοντας 10,2 και 10.2 και δεν υπάρχει αποτέλεσμα..

    οι μεταβλητές που πέρνουν τις τιμές απο τα textboxes είναι double.

    ευχαριστώ

    CC Calculator -newest version: 1.6-

    Επισκευθήτε το blog μου :)

  •  28-05-2007, 18:10 32281 σε απάντηση της 32279

    Απ: δεκαδικοί αριθμοί

    κώδικα δεν θα δώσεις?

    τι εμφανίζει στο message box?

    πετάει κάποιο error?
  •  28-05-2007, 18:11 32282 σε απάντηση της 32279

    Απ: δεκαδικοί αριθμοί

    Τί εννοείς δεν υπάρχει αποτέλεσμα? Δεν μπορείς να γράψεις δεκαδικούς αριθμούς στο TextBox? Σου χτυπάει το Parse? Το αποτέλεσμα που βλέπεις στο MessageBox δεν είναι το αναμενόμενο? Κάτι άλλο? Για να μην δουλεύει κάτι τόσο απλό, κάτι περίεργο γίνεται στον κώδικα.

    Τα TextBox παίρνουν δεκαδικούς (και όχι μόνο). Ως υποδιαστολή θεωρείται η τελεία ή το κόμα, ανάλογα με τα regional settings του χρήστη. Αυτό όμως δεν σε επηρεάζει, γιατί η double.Parse ή η decimal.Parse χρησιμοποιούν τη σωστή υποδιαστολή. Στο τέλος, το αποτέλεσμα θα πρέπει πάλι να το μετατρέψεις σε string για να το δείξεις, είτε με την ToString ή την String.Format.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  28-05-2007, 18:27 32285 σε απάντηση της 32282

    Απ: δεκαδικοί αριθμοί

    Συνήθως δεν απαντώ σε μη ολοκληρωμένα ερωτήματα, αλλά αυτό είναι αρκετά απλό (π.χ. δεν αναφέρεις ούτε καν τη γλώσσα που χρησιμοποιείς). Συνοψίζοντας τα λεγόμενα του Παναγιώτη:

    Dim num1 as Decimal = Decimal.Parse(textbox1.text);
    Dim num2 as Decimal = Decimal.Parse(textbox2.text);

    Dim result as Decimal = num1 * num2;

    MessageBox.Show("Result is : " + result.ToString());

    Όπως λέει και ο Παναγιώτης, κόμμα είναι αυτό που έχει οριστεί στα regional options του χρήστη (control panel). 


    Dimitris Papadimitriou
    Software Development Professional
    dotNETZone.gr News

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Διαβάστε επίσης τους όρους χρήσης.
  •  28-05-2007, 18:34 32287 σε απάντηση της 32282

    Απ: δεκαδικοί αριθμοί

    Φίλε PsySpooky,

    Όπως λέει και ο Παναγίωτης Το decimal.Parse(object val) θα δουλέψει σωστα, αν τωρα θες να ελέγχεις αν ο χρήστης έβαλε αριθμούς και οχι γραμματα (χώρις να 'χτυπήσει' Exception), μπορεις να χρησημοποιήσεις την decimal.TryParse(object val, out decimal outVal) που επιστρέφει true/false, και στην out μεταβλητη την τιμή.

    PS. μπορεις να το κάνεις και με  double το ίδιο ακριβώς.

    Νασος


    "Success is the ability to go from one failure to another with no loss of enthusiasm."
    Winston Churchill

    "Quality means doing it right when no one is looking."
    Henry Ford

  •  28-05-2007, 19:19 32289 σε απάντηση της 32287

    Απ: δεκαδικοί αριθμοί

    χρησιμοποιώ Visual C++

    εάν γράψω δεκαδικούς αριθμούς στα textbox μου βγάζει error:

    An unhandled exception of type 'System.FormatException' occurred in mscorlib.dll

    Additional information: Input string was not in a correct format.



    CC Calculator -newest version: 1.6-

    Επισκευθήτε το blog μου :)

  •  29-05-2007, 17:29 32317 σε απάντηση της 32285

    Απ: δεκαδικοί αριθμοί

    Για να μην ανοίγω καινούριο θέμα και επειδή και εγώ θέλω να κάνω πολλές μετατροπές απο string σε double ποια μέθοδο είναι καλύτερο να χρησιμοποιούμε; Την System::Convert::ToDouble ή την Decimal.Parse; Ποια θα δουλέψει καλύτερα;
    My dream is to fly over the rainbow so high!!!!
  •  29-05-2007, 18:17 32319 σε απάντηση της 32317

    Απ: δεκαδικοί αριθμοί

    Άλλο ο τύπος decimal, άλλο ο double. Ο ένας έχει σταθερή ακρίβεια, ο άλλος είναι floating point. Υπάρχουν και η Convert.ToDecimal και η double.Parse, ενώ υπάρχουν και οι παραλλαγές decimal.TryParse οι οποίες δεν ρίχνουν exception σε περίπτωση λάθους, αλλά επιστρέφουν τιμή false. Εσωτερικά η Convert.ΤοDecimal καλεί την decimal.Parse. H Parse δίνει μεγαλύτερο έλεγχο στον τρόπο που γίνεται το parsing. Ρίξε μία ματιά στο documentation για περισσότερες λεπτομέρειες.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  29-05-2007, 20:01 32321 σε απάντηση της 32319

    Απ: δεκαδικοί αριθμοί

    Παναγιώτης Καναβός:

    Άλλο ο τύπος decimal, άλλο ο double. Ο ένας έχει σταθερή ακρίβεια, ο άλλος είναι floating point. Υπάρχουν και η Convert.ToDecimal και η double.Parse, ενώ υπάρχουν και οι παραλλαγές decimal.TryParse οι οποίες δεν ρίχνουν exception σε περίπτωση λάθους, αλλά επιστρέφουν τιμή false. Εσωτερικά η Convert.ΤοDecimal καλεί την decimal.Parse. H Parse δίνει μεγαλύτερο έλεγχο στον τρόπο που γίνεται το parsing. Ρίξε μία ματιά στο documentation για περισσότερες λεπτομέρειες.

    Συμφωνώ με όλα εκτός από το πρώτο. Τόσο το decimal όσο και το double είναι floating point data types.


    Dimitris Papadimitriou
    Software Development Professional
    dotNETZone.gr News

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Διαβάστε επίσης τους όρους χρήσης.
  •  29-05-2007, 23:18 32325 σε απάντηση της 32321

    Απ: δεκαδικοί αριθμοί

    το πρόβλημα λύθηκε...

    απλά άλλαξα από System::Convert::ToInt32 σε

    System::Convert::ToDouble



    CC Calculator -newest version: 1.6-

    Επισκευθήτε το blog μου :)

Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems