c语言中,两个整型数据相除,结果用浮点型变量储存,为什么输出的结果不对。比如409÷5应该等于81.80但输出的确实81.00 ?
ç¨ä½ 举çä¾åï¼409/5ï¼å®çç»ææ¯81ï¼ä¸æ¯81.8ï¼å¦æè¦è®©ç»æä¿çå°æ°é¨åï¼é£ä¹å¯ä»¥èèç»è¢«é¤æ°æé¤æ°åæ带å°æ°çå½¢å¼ï¼æ¯å¦åæï¼409.0/5æ409/5.0æè 409.0/5.0追é®
ææ¯è¯´ç»æç¨æµ®ç¹ååéå¨åï¼è¢«é¤æ°ä¸é¤æ°ç¨æ´åå¨åï¼å¾åºçæ¯81.00ï¼å¦æ被é¤æ°æ¢ææµ®ç¹åï¼ç»æå°±æ¯81.80ï¼ä¸ºä»ä¹åæ ·æ¯æµ®ç¹åçç»æï¼åä¸ä¸ªå°æ°ç¹åé¢ç就被èå»äºå¢ï¼
ææ¯è¯´ç»æç¨æµ®ç¹ååéå¨åï¼è¢«é¤æ°ä¸é¤æ°ç¨æ´åå¨åï¼å¾åºçæ¯81.00ï¼å¦æ被é¤æ°æ¢ææµ®ç¹åï¼ç»æå°±æ¯81.80ï¼ä¸ºä»ä¹åæ ·æ¯æµ®ç¹åçç»æï¼åä¸ä¸ªå°æ°ç¹åé¢ç就被èå»äºå¢ï¼
ææ¯è¯´ç»æç¨æµ®ç¹ååéå¨åï¼è¢«é¤æ°ä¸é¤æ°ç¨æ´åå¨åï¼å¾åºçæ¯81.00ï¼å¦æ被é¤æ°æ¢ææµ®ç¹åï¼ç»æå°±æ¯81.80ï¼ä¸ºä»ä¹åæ ·æ¯æµ®ç¹åçç»æï¼åä¸ä¸ªå°æ°ç¹åé¢ç就被èå»äºå¢ï¼
ææ¯è¯´ç»æç¨æµ®ç¹ååéå¨åï¼è¢«é¤æ°ä¸é¤æ°ç¨æ´åå¨åï¼å¾åºçæ¯81.00ï¼å¦æ被é¤æ°æ¢ææµ®ç¹åï¼ç»æå°±æ¯81.80ï¼ä¸ºä»ä¹åæ ·æ¯æµ®ç¹åçç»æï¼åä¸ä¸ªå°æ°ç¹åé¢ç就被èå»äºå¢ï¼
ææ¯è¯´ç»æç¨æµ®ç¹ååéå¨åï¼è¢«é¤æ°ä¸é¤æ°ç¨æ´åå¨åï¼å¾åºçæ¯81.00ï¼å¦æ被é¤æ°æ¢ææµ®ç¹åç»æå°±æ¯81.80ãåæ ·æ¯æµ®ç¹åçç»æï¼ä¸ºä»ä¹åé¢ä¸ä¸ªçå°æ°ä½ä¸ç书ä¼åæ00
ææ¯è¯´ç»æç¨æµ®ç¹ååéå¨åï¼è¢«é¤æ°ä¸é¤æ°ç¨æ´åå¨åï¼å¾åºçæ¯81.00ï¼å¦æ被é¤æ°æ¢ææµ®ç¹åç»æå°±æ¯81.80ãåæ ·æ¯æµ®ç¹åçç»æï¼ä¸ºä»ä¹åé¢ä¸ä¸ªçå°æ°ä½ä¸ç书ä¼åæ00
ææ¯è¯´ç»æç¨æµ®ç¹ååéå¨åï¼è¢«é¤æ°ä¸é¤æ°ç¨æ´åå¨åï¼å¾åºçæ¯81.00ï¼å¦æ被é¤æ°æ¢ææµ®ç¹åç»æå°±æ¯81.80ãåæ ·æ¯æµ®ç¹åçç»æï¼ä¸ºä»ä¹åé¢ä¸ä¸ªçå°æ°ä½ä¸ç书ä¼åæ00
ææ¯è¯´ç»æç¨æµ®ç¹ååéå¨åï¼è¢«é¤æ°ä¸é¤æ°ç¨æ´åå¨åï¼å¾åºçæ¯81.00ï¼å¦æ被é¤æ°æ¢ææµ®ç¹åç»æå°±æ¯81.80ãåæ ·æ¯æµ®ç¹åçç»æï¼ä¸ºä»ä¹åé¢ä¸ä¸ªçå°æ°ä½ä¸ç书ä¼åæ00
ææ¯è¯´ç»æç¨æµ®ç¹ååéå¨åï¼è¢«é¤æ°ä¸é¤æ°ç¨æ´åå¨åï¼å¾åºçæ¯81.00ï¼å¦æ被é¤æ°æ¢ææµ®ç¹åç»æå°±æ¯81.80ãåæ ·æ¯æµ®ç¹åçç»æï¼ä¸ºä»ä¹åé¢ä¸ä¸ªçå°æ°ä½ä¸ç书ä¼åæ00
ææ¯è¯´ç»æç¨æµ®ç¹ååéå¨åï¼è¢«é¤æ°ä¸é¤æ°ç¨æ´åå¨åï¼å¾åºçæ¯81.00ï¼å¦æ被é¤æ°æ¢ææµ®ç¹åç»æå°±æ¯81.80ãåæ ·æ¯æµ®ç¹åçç»æï¼ä¸ºä»ä¹åé¢ä¸ä¸ªçå°æ°ä½ä¸ç书ä¼åæ00
ææ¯è¯´ç»æç¨æµ®ç¹ååéå¨åï¼è¢«é¤æ°ä¸é¤æ°ç¨æ´åå¨åï¼å¾åºçæ¯81.00ï¼å¦æ被é¤æ°æ¢ææµ®ç¹åç»æå°±æ¯81.80ãåæ ·æ¯æµ®ç¹åçç»æï¼ä¸ºä»ä¹åé¢ä¸ä¸ªçå°æ°ä½ä¸ç书ä¼åæ00
ææ¯è¯´ç»æç¨æµ®ç¹ååéå¨åï¼è¢«é¤æ°ä¸é¤æ°ç¨æ´åå¨åï¼å¾åºçæ¯81.00ï¼å¦æ被é¤æ°æ¢ææµ®ç¹åç»æå°±æ¯81.80ãåæ ·æ¯æµ®ç¹åçç»æï¼ä¸ºä»ä¹åé¢ä¸ä¸ªçå°æ°ä½ä¸ç书ä¼åæ00
ææ¯è¯´ç»æç¨æµ®ç¹ååéå¨åï¼è¢«é¤æ°ä¸é¤æ°ç¨æ´åå¨åï¼å¾åºçæ¯81.00ï¼å¦æ被é¤æ°æ¢ææµ®ç¹åç»æå°±æ¯81.80ãåæ ·æ¯æµ®ç¹åçç»æï¼ä¸ºä»ä¹åé¢ä¸ä¸ªçå°æ°ä½ä¸ç书ä¼åæ00
ææ¯è¯´ç»æç¨æµ®ç¹ååéå¨åï¼è¢«é¤æ°ä¸é¤æ°ç¨æ´åå¨åï¼å¾åºçæ¯81.00ï¼å¦æ被é¤æ°æ¢ææµ®ç¹åç»æå°±æ¯81.80ãåæ ·æ¯æµ®ç¹åçç»æï¼ä¸ºä»ä¹åé¢ä¸ä¸ªçå°æ°ä½ä¸ç书ä¼åæ00
追çæå·²ç»è¯´è¿äºï¼å说ä¸éï¼å¨Cè¯è¨ä¸ï¼ä¸¤ä¸ªæ´æ°ç¸é¤ï¼ç»æä¹æ¯æ´æ°ï¼ç´æ¥èå¼å°æ°é¨åï¼å¦ææä¸ä¸ªæ¯æµ®ç¹æ°ï¼é£ä¹Cè¯è¨ç¼è¯å¨ä¼å¯¹å¦ä¸ä¸ªæ´æ°è¿è¡ç±»å转æ¢ï¼ä»æ´å转æ¢ææµ®ç¹åï¼åè¿è¡è¿ç®ï¼ç»æä¿çå°æ°é¨åã
1. 运算结果与运算对象的数据类型有关,若除数和被除数都是int,则商是int。 例:9/2 = 4
2. 若除数 和 被除数 中有一个是浮点型数据,则商为浮点型。 例:9.0/2 = 4.500000
3. 例:
double a = 9 / 2;
printf("a = %lf \n", a);
运行结果: a = 4.000000
分析: 9 / 2 = 4 ,再将 4 赋值给 double a,
最后 4就以double类型输出,结果为4.000000
4. 例 :
double b = 9.0 / 2;
printf("b = %lf \n", b);
运行结果: a = 4.500000
分析: 9.0 / 2 = 4.5,再将 4.5 赋值给 double b,
最后 4.5 就以double类型输出,结果为4.500000