各位前辈好,本人是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>