期待解惑。
下面的程序实际输出与理论输出不一致。 比如输入 1.11 2.22 3.33 4.44 5.55
输出结果应该是 1.11 2.22 3.33 4.44 5.55
但是实际是 1.11 2.22 3.32 4.44 5.55
输入任何的 5 个浮点型的值 数组中第3个值 总是少0.01 为什么?
期待解惑。
#include <stdio.h>
int main()
{
float amounts[5] = {0.0}; //存储输入的钱,5个浮点型。
long dollars[5] = {0}; //存放 amounts的整数部分。
long cents [5] = {0}; //存放 amounts的小数部分。
int i = 0; //控制循环变量。
printf("\nPlease input you money: ");
for (i=0; i<5; i++)
{
scanf("%f", &amounts[i]); //输入浮点型的钱。存放到amounts数组里面
}
for (i=0; i<5; i++)
{
dollars[i] = (long)amounts[i]; //获取amounts整数部分
cents[i] = (long)((amounts[i] - (long)amounts[i]) * 100); //获取amounts小数部分,只要两位
printf("\nThe money is %ld.%ld .", dollars[i], cents[i]); //输出
}
return 0;
}