Puisque vous ne l'utilisez pas tous les suffixes, les littéraux 13
et 4
sont interprétés comme un entier:
Manuel:
Si la traduction littérale n'a pas de suffixe, il a la première de ces types dans lequel sa valeur peut être représentée: int
, uint
, long
, ulong
.
Ainsi, puisque vous déclarez 13
comme integer, integer division sera effectuée:
Manuel:
Pour une opération de la forme x / y, opérateur binaire résolution de surcharge est appliquée pour sélectionner un opérateur spécifique de mise en œuvre. Les opérandes sont convertis en types de paramètre de l'opérateur et le type du résultat est le type de retour de l'opérateur.
Les prédéfinis de la division opérateurs sont énumérés ci-dessous. Les opérateurs de calculer le quotient de x et y.
Division entière:
int operator /(int x, int y);
uint operator /(uint x, uint y);
long operator /(long x, long y);
ulong operator /(ulong x, ulong y);
Et donc, en arrondissant se produit:
La division arrondit le résultat à zéro, et la valeur absolue du résultat est le plus grand entier qui est inférieur à la valeur absolue du quotient des deux opérandes. Le résultat est nul ou positif lorsque les deux opérandes ont le même signe et de zéro ou négative, lorsque les deux opérandes ont des signes opposés.
Si vous procédez de la manière suivante:
int x = 13f / 4f;
Vous recevrez une erreur de compilation, depuis une division flottante ( /
opérateur de 13f
) résultats dans un flotteur, qui ne peut pas être converti en int implicitement.
Si vous voulez la division à virgule flottante de la division, vous aurez à faire le résultat d'un flotteur:
float x = 13 / 4;
Notez que vous aurez encore à diviser des nombres entiers, qui va être implicitement exprimées à flotteur: le résultat sera 3.0
. De déclarer explicitement les opérandes comme le flotteur, à l'aide de l' f
suffixe (13f
, 4f
).