Ich habe diesen Code;Variable, die merkwürdig wirkt (wie Fließkomma)
static int test = 100;
static int Test
{
get
{
return (int)(test * 0.01f);
}
}
Ausgang: 0
Aber dieser Code gibt verschiedene
static int test = 100;
static int Test
{
get
{
var y = (test * 0.01f);
return (int)y;
}
}
Ausgang: 1
Auch dieser Code Ich habe
static int test = 100;
static int Test
{
get
{
return (int)(100 * 0.01f);
}
}
Ausgabe lautet: 1
Ich sehe IL-Ausgabe und ich verstehe nicht, warum C# diese mathematische Operation zur Kompilierzeit und Ausgabe anders machen?
Was ist der Unterschied zwischen diesen beiden Codes? Warum ich mich entschieden habe, variable Ergebnisse zu verwenden, ändert sich?
Wie überprüfen Sie Werte? – dotctor
Mögliches Duplikat von [Ist Fließkomma-Mathe gebrochen?] (Http://stackoverflow.com/questions/588004/is-floating-point-math-broken) – Liam
Ich habe mich nach einer SO umgeschaut, aber ich kann die nicht finden genaue Antwort. Diese Antwort kann jedoch Dinge ein wenig aufklären: http://Stackoverflow.com/a/15117741/2594485 –