Ich berechne den Prozentsatz, der einem Datagrid hinzugefügt werden soll, aber wenn ich die Daten melde, wird immer 0 zurückgegeben. Was mache ich falsch?
Wenn ich den folgenden Fall habe: Die Variable quantidadeInstalada hat den Wert 10 und das Ziel hat 20. Das Fazit müsste mir 50 zurückgeben, aber es gibt mir 0 zurück
private void AdicionarPessoa()
{
string Valida = ValidaPessoa();
if (Valida.Equals(""))
{
double concluido=0, falta=0;
int quantidadeInstalada = Convert.ToInt32(ttbQuantidade.Text);
int meta = Convert.ToInt32(ttbMetaPessoa.Text);
concluido = (quantidadeInstalada/meta)*100;
falta = 100-concluido;
MessageBox.Show(concluido.Text);
}
else
MessageBox.Show(Valida);
}
Es liegt wahrscheinlich an der Präzision der int
. Verwenden Sie stattdessen ein decimal
oder double
.
Wenn wir eine Ganzzahl verwenden, verlieren wir an Genauigkeit.
Console.WriteLine(100 / 17); // 5
Console.WriteLine(100 / 17m); // 5.8823529411764705882352941176
Console.WriteLine(100 / 17d); // 5.88235294117647
Console.WriteLine(100 / 17f); // 5.882353
Da ganze Zahlen immer abrunden, 0.99
wie eine ganze Zahl ist 0
.
Beachten Sie, dass für die Genauigkeit die Art der Eingaben von Bedeutung ist.
double output = input1 * input2;
Zum Beispiel:
double outputA = 9 / 10;
Console.WriteLine(outputA); // 0
double outputB = 9 / 10d;
Console.WriteLine(outputB); // 0.9
double outputC = 9d / 10;
Console.WriteLine(outputC); // 0.9
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen