C语言 数组元素 强制类型转换

各位前辈好,本人是C语言初学者,最近碰到一道习题,代码如下:
#include <stdio.h>
int main(void){ double amounts[5]={1.1, 2.2, 3.3, 4.4, 5.5}; long dollars[5]; long cents[5]; for(unsigned int i=0;i<5;i++) dollars[i]=((long)(amounts[i]*1))/1; //此处一直显示不正确的数值,但是将1改成100后,结果却正常。

for(unsigned int i=0;i<5;i++) cents[i]=((long)(amounts[i]*100))%100;

for(unsigned int i=0;i<5;i++) printf("%c%ld.%ld\n",'$',dollars[i],cents[i]);

return 0;}

dollars数组,本来是打算直接强制类型转换来取整的,但是结果却是不正常的数字(见下图),请问是不是本人的类型转换的用法有误?

/*

$1.10

$2.20

$3.30

$4.40

$5.50

Press any key to continue

*/

#include <stdio.h>
int main(void) {
double amounts[5] = {1.1, 2.2, 3.3, 4.4, 5.5};
long dollars[5];
long i,cents[5];
for(i = 0;i < 5;i++)
dollars[i] = amounts[i]; // 利用系统功能进行自动转换
for(i = 0;i < 5;i++)
cents[i] = ((long)(amounts[i]*100))%100;
for(i = 0;i < 5;i++)
printf("$%ld.%ld\n",dollars[i],cents[i]);
return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-12-30

相似回答