C #: teile ein int durch 100

8

Wie teile ich int durch 100?

zB:

%Vor%

Warum ergibt dies y ist 328 und nicht 328.94 ?

    
Craig Johnston 09.03.2011, 07:06
quelle

5 Antworten

18

Wenn eine ganze Zahl durch eine andere geteilt wird, wird die arithmetische Operation als Ganzzahlarithmetik durchgeführt.

Wenn Sie möchten, dass es als Float-, Doppel- oder Dezimalarithmetik ausgeführt wird, müssen Sie einen der Werte entsprechend umwandeln. Zum Beispiel:

%Vor%

Beachten Sie, dass ich auch den Typ von y geändert habe - es ist nicht sinnvoll, eine Dezimalarithmetik durchzuführen, sondern das Ergebnis in int zu speichern. Das int kann möglicherweise 328.94 nicht speichern.

Sie müssen nur eins der Werte zum richtigen Typ erzwingen, da dann das andere zum selben Typ hochgestuft wird - es gibt keinen Operator, der zum Teilen einer Dezimalzahl durch eine ganze Zahl definiert ist . Wenn Sie arithmetische Berechnungen mit mehreren Werten durchführen, sollten Sie alle nur für die Übersichtlichkeit auf den gewünschten Typ zwingen - es wäre bedauerlich, wenn eine Operation mit Ganzzahlarithmetik und eine andere Operation ausgeführt wird Doppelarithmetik, wenn Sie erwartet hätten, dass beide doppelt wären.

Wenn Sie Literale verwenden, können Sie einfach einen Suffix verwenden, um stattdessen den Typ anzugeben:

%Vor%

Ob Sie decimal , double oder float verwenden sollten, hängt davon ab, was Sie tun möchten. Lesen Sie meine Artikel zu Dezimal Fließkomma und binare Gleitkommazahl . Normalerweise ist double geeignet, wenn Sie mit "natürlichen" Größen wie Höhe und Gewicht arbeiten, wobei jeder Wert eine Annäherung ist. decimal eignet sich für künstliche Mengen wie Geld, die typischerweise genau als Dezimalwerte dargestellt werden.

    
Jon Skeet 09.03.2011, 07:09
quelle
3

328.94 ist keine ganze Zahl. Ganzzahl / dividiert Runden; so funktioniert es.

Ich schlage vor, dass Sie in Dezimalzahlen umwandeln:

%Vor%

oder mit Variablen:

%Vor%     
Marc Gravell 09.03.2011 07:09
quelle
3

Weil ein int nur eine ganze Zahl ist. Versuchen Sie es stattdessen.

%Vor%     
Øyvind Bråthen 09.03.2011 07:08
quelle
0

Weil Sie Integer-Division machen. Fügen Sie einen Punkt hinter den 100 hinzu und Sie erhalten stattdessen einen Doppelpunkt.

Wenn Sie zwei Ganzzahlen teilen, ist das Ergebnis eine ganze Zahl. Ganzzahlen haben keine Dezimalstellen, daher werden sie nur abgeschnitten.

    
mpen 09.03.2011 07:08
quelle
0

seine Programmierung fundamental, dass int (ganzzahlige) Division unterscheidet sich von float (Gleitkomma) Dividieren.

Wenn Sie möchten .94 float oder double verwenden

%Vor%     
Bonshington 09.03.2011 07:09
quelle

Tags und Links