2016-03-23 18 views
0

Ich habe Test = Convert.ToSingle((125 * 100)/149); Linie in meiner C# Anwendung schweben. Ich erwarte 83,89 als Ergebnis, aber ich bekomme nur 83, wie im Bild unten zu sehen ist.Was passiert mit Nachkommastellen?

Außerdem, wenn ich meine MessageBox.Show(Test.ToString("0.00")); Visual Studio 2015-Instanz sagen zerquetscht im Debug-Modus und startet sich.

Was kann der Grund sein? Wo ist der Dezimalteil der Gleitkommazahl?

enter image description here

+8

Sie sind Integer-Arithmetik durchgeführt wird. Sie werden nur ganze Zahlen daraus bekommen. Ändern zumindest eine der Zahlen zu einer Gleitkommazahl, d.h. '(125,0 * 100)/149' und die' int's wird Gleitkommazahlen umgewandelt werden. –

+0

@Glorin Oakenfoot Sie haben Recht. Ich dachte, dass Fließkomma-Standard für solche Operationen ist. – Demir

Antwort

0

Sie sind wahrscheinlich nicht die Werte aus heiterem Himmel zu bekommen. So erklären sie (optional einige Kommentare einschließlich Abstand zu nehmen von magischen Zahlen):

value = 125;   // Previously declared as float 
int factor = 100;  // Standard multiplier. 
int divisor = 149;  // Process factor. 
float test = Convert.ToSingle(value) * factor/divisor; 

// result: 83.89262