Annuaire
Regardez d'abord le code
#include <stdio.h>
int main()
{
int a=5,a1=14,b=2,c=10,d=3;
float a2 = 14.00,c1 = 10.00,d1 = 3.00;
int num1,num2, num3,num31,num32,num322;
float num11,num21,num22,num33,num311,num3111;
num1 = a / b;
num11 = a/b;
num2 = c / d;
num21 = a1/d1;
num22 =c / d;
num3 = c1 / d;
num31 = c/d1;
num311=c/d1;
num3111=c1 / d;
num32 = c1/d1;
num322= a2/d1;
num33 = c1/d1;//都为浮点型。
printf("num1 = %d,num11 = %f\n",num1,num11);
printf("num2 = %d,num21 = %.2f,num22 = %f\n",num2,num21,num22);
printf("num3 = %d,num31 = %d,num311 = %.2f,num3111= %.2f,num32 = %d,num322= %d,num33 = %f\n",num3,num31,num311,num3111,num32,num322,num33);
return 0;
}
Résultat de sortie :
num1 = 2,num11 = 2.000000
num2 = 3,num21 = 4.67,num22 = 3.000000
num3 = 3,num31 = 3,num311 = 3.33,num3111= 3.33,num32 = 3,num322= 4,num33 = 3.333333
en conclusion:
En langage C, / est arrondi à l'inférieur, la situation spécifique :
type de dividende | type de diviseur | type de quotient | résultat de sortie |
entier | entier | entier | arrondir vers le bas |
entier | entier | point flottant | arrondir vers le bas +.0000 |
point flottant | entier | point flottant | arrondir |
entier | point flottant | entier | arrondir vers le bas |
point flottant | entier | entier | arrondir vers le bas |
entier | point flottant | point flottant | arrondir |
point flottant | point flottant | entier | arrondir vers le bas |
point flottant | point flottant | point flottant | arrondir |
En résumé, l'arrondi n'est effectué que lorsque tous sont des types à virgule flottante, que le dividende et le quotient sont des types à virgule flottante et que le diviseur et le quotient sont des types à virgule flottante.
Améliorer:
Si nous voulons être arrondis: faites simplement du résultat un flottant arrondi, puis +0,5 et arrondissez (cast).
Par exemple
5.00/2 = 2.50, int( 2.50+.5)=3。
14/3.00= 4.67,entier (4.67+.5)=5。
10.00/3.00= 3.33,int (3.33+.5)=3。