当double类型强制转换为int时,百分位少了1,请教这是什么原因?
这是我在自学《c语言入门经典》时遇到的问题,第二章习题3:一个产品有两个版本,其一价格为$3.5,其一价格为$5.5(本人修改为3.55和5.55),编写一个程序提示用户输入产品版本和数量,然后根据产品数量,计算并输出价格。——因为该书习题4是要求以“** dollars and ** cents”的格式输出某工人的时薪,所以我结合起来写到:#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int quantity = 0;
const double prince_1 = 3.55;
const double prince_2 = 5.55;
int type = 0;
double total = 0.0;
double cents = 0.0;
int k = 0;
printf("Input the type of book is 1 or 2?\n");
scanf("%d",&type);
printf("Input the quantity of books are :");
scanf("%d",&quantity);
total = quantity*(prince_1+(type-1)*(prince_2-prince_1));
printf("\nThe total are %.5f\n",total);
cents = total-(int)total;/*这一段是为了看清楚哪步出了问题,才拆开写的*/
printf("%f\n",cents);
cents = 100*(total-(int)total);
printf("%f\n",cents);
k = (int)cents;
printf("\n\n %d dollars and %d cents",(int)total,k);
return 0;
}
可是在我输入产品为1,数量为32时,明明应该是$113.60
输出的却是113 dollars and 59 cents
请问这是为什么?