C# Kommazahlen

  • Guten Tag Community,


    wie kann ich das Ergebnis dieser Aufgabe in eine Kommazahl umwandeln ?


    Spoiler anzeigen
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;

    Spoiler anzeigen
    namespace WindowsFormsApplication1
    {
    public partial class Form1 : Form
    {
    public Form1()
    {
    InitializeComponent();
    }
    private void rechnen(int number)
    {
    int Ergebnis = 0, Zahl1 = 0, Zahl2 = 0;
    try
    {
    Zahl1 = Convert.ToInt32(textBox1.Text);
    Zahl2 = Convert.ToInt32(textBox2.Text);
    if (number == 1)
    {
    Ergebnis = Zahl1 + Zahl2;
    label1.Text = "+";
    }
    if (number == 2)
    {
    Ergebnis = Zahl1 - Zahl2;
    label1.Text = "-";
    }
    if (number == 3)
    {
    Ergebnis = Zahl1 * Zahl2;
    label1.Text = "*";
    }
    if (number == 4)
    {
    Ergebnis = Zahl1 / Zahl2;
    label1.Text = "/";
    }
    textBox3.Text = Ergebnis.ToString();
    }
    catch { MessageBox.Show("Fehler: Nur Zahlen sind zugelassen!","Fehler",MessageBoxButtons.OK, MessageBoxIcon.Error); }
    }

    Spoiler anzeigen
    private void button4_Click(object sender, EventArgs e)
    {
    rechnen(3);
    }

    Spoiler anzeigen
    private void button2_Click(object sender, EventArgs e)
    {
    rechnen(1);
    }

    Spoiler anzeigen
    private void button3_Click(object sender, EventArgs e)
    {
    rechnen(2);
    }

    Spoiler anzeigen
    private void button5_Click(object sender, EventArgs e)
    {
    rechnen(4);
    }
    }
    }


    Ich hoffe jemand kann mir helfen


    MfG


    Master

  • Reelle Zahlen werden im Computer in der wissenschaftlichen Notation gespeichert ( z.B. 3,14*10^(-7) ). Somit speichert eine float Variable keine 7 Stellen, sondern 7 signifikante Stellen.
    1923152 ist mit dem Datentyp float speicherbar genau so wie 0,0000000000000000009015283.

  • Ich denke du solltest mal bisschen die SuFu nutzen und die C# Basics lernen, von Datentypen bis hin zur OOP und/oder Erweiterten Verzweigung / Überladung.


    Was ich dir ans Herz lege sind die Datentypen ;D


    Naja egal, eine "Uhrzeit" kannst du nicht direkt einfügen, du kannst jedoch mit DateTime.Now die derzeitige Uhrzeit bekommen.

    MFG

  • Reelle Zahlen werden im Computer in der wissenschaftlichen Notation gespeichert ( z.B. 3,14*10^(-7) ). Somit speichert eine float Variable keine 7 Stellen, sondern 7 signifikante Stellen.
    1923152 ist mit dem Datentyp float speicherbar genau so wie 0,0000000000000000009015283.


    Reelle Zahlen speichern wir schnell garniert. Denn Pi oder Wurzel 2 sind im Computer annäherungsberechnungen genau wie theoretisch viele rationale Zahlen.
    Um tiefer das ganze zu erklären müsste man jetzt eine ganze Seite schreiben, das gibt's ja aber im Internet, siehe "Fließkommazahlen".


    @TE: beachte, dass float und double keine exakten Rationalen Darstellungen einer Zahl sein könnten. Kurz gesagt sie haben "Rundungsfehler".

  • Reelle Zahlen speichern wir schnell garniert.

    Wir speichern gar nichts, da hast du Recht, sondern der Computer speichert. Dieser speichert reelle Zahlen, zum Beispiel die Zahl 1, die Zahl 2, die Zahl 3,14, die Zahl 42 und auch noch ganz viele andere reelle Zahlen. Gut, einige lassen sich schlecht in begrenztem Raum speichern, da Menschen ja nicht mal in der Lage sind, sie explizit aufzuschreiben, wie z.B. die Wurzel aus 2. Wenn ich dem Computer aber z.B. in C++ die Anweisung gebe, die Wurzel aus zwei zu berechnen ( sqrt(2) ), dann speichert er das Ergebnis (eine reelle Zahl) annäherungsweise als rationale Zahl doppelter signifikanter Genauigkeit in der wissenschaftlichen Notation in einem 64bit großen RAM-Block. Also speichert er auch hier wieder eine reelle Zahl, so gut er kann. Natürlich werden da unter einigen bestimmten Umständen Abstriche bei der Genauigkeit gemacht, aber etwas gegenteiliges habe ich auch nie behauptet. Die Aussage, dass eine kleine Teilmenge der reellen Zahlen, nämlich die irrationalen Zahlen, nicht zu 100% genau gespeichert werden können steht meiner Meinung nach nicht im Widerspruch zu meiner ursprünglichen Aussage, dass ein moderner Computer reelle Zahlen in der wissenschaftlichen Notation speichert und eine solche Variable deshalb keine feste Präzision, sondern eine Präzision nach signifikanten Stellen besitzt. Genau das wird ja gerade dann wichtig, wenn man solche Datentypen vergleichen möchte (siehe http://www.cygnus-software.com…loats/comparingfloats.htm). Ich sehe meine Behauptung hier also nicht als falsch an.


    Ich sehe auch nicht den Punkt, an dem man eine ganze Seite zu dem Thema schreiben müsste, wenn der Wikipediaartikel zu dem Thema nur 5 Sätze lang ist. http://de.wikipedia.org/wiki/Doppelte_Genauigkeit
    Ich denke auch, dass allen klar ist, dass man die Wurzel aus zwei natürlich nicht genau auf einem Computer speichern kann, wenn man sie doch nicht einmal auf ein Blatt Papier schreiben kann. Aber danke, dass du es nochmal erwähnt hast, dann können wir uns ja sicher sein, dass das jetzt auch jeder weiß.

  • Es ist ja auch völlig ausreichend den meisten Leuten hier double Precision Floating Point Numbers zu erklären wenn Floating Point Numbers in Grundlagen nichtmal vorhanden sind, geschweige denn bei den meisten Leuten irgendwelche Darstellungen von Daten im Speicher bekannt ist.
    Ich wollte nur einmal erwähnt haben, dass es eventuell für einige Berechnungen suboptimal sein kann, eine Zahl annäherungsweise darzustellen. Das fängt dann schon bei größeren Divisionen an, wo sich die Rundungsfehler nach und nach summieren. Das deine Aussage falsch wäre, habe ich auch nicht behauptet. Es ist nur nicht grade sinngemäß zu sagen, der Computer speichere die eigentlichen Reellen Zahlen, die nicht durch andere Mengen (Rationalen Zahlen abwärts) abgedeckt sind, dass könnte nämlich für viele der User hier falsch aufgenommen werden. Meine Antwort kam eventuell dank der Autokorrektur anders rüber als sie gemeint war.


    Es gibt nunmal auch alternativen für die klassischen Fließkommazahlen, mit denen man gerade im Bereich der Grundlegenden Operationen (Addition, Subtraktion, Division, Multiplikation) relativ flott und vorallem genau voran kommt, wenn es denn genau sein sollte. Das war auch letztlich den Punkt, den ich ansprechen wollte. Ich sehe es nämlich desöfteren bei uns in der Firma, dass Anwendungsentwickler ohne weitere Hintergrundgedanken immer Fließkommazahlen wählen wenn es über die ganzen Zahlen hinaus geht. Gerade wenn es um z.B. Geldbeträge geht, zählt halt eben die Genauigkeit, da ist ein Float schon zu ungenau und ein Double eventuell auch.


    Wer sich der Thematik genauer witmen möchte soll sich Bücher dazu kaufen, gibt es ja mittlerweile und rauer Menge, selbst für Anfänger, von denen sich hier im Forum etliche tummeln, sind gute Bücher dabei. :whistling: