回复 楼主 不负年华
楼主的意思我想应该是不输出小数点,改了下,应该符合要求
#include "stdio.h"
void main()
{float money=0,profit=0;
scanf("%f",&profit);
if(profit<=1000)
{
money= 500;
printf("%1.0f,%1.0f\n",profit,money);
}
else if(profit>1000 && profit<=2000)
{
money=500+profit*0.1;
printf("%1.0f,%1.0f\n",profit,money);
}
else if(profit>2000 && profit<=5000)
{
money=500+profit*0.15;
printf("%1.0f,%1.0f\n",profit,money);
}
else if(profit>5000 && profit<=10000)
{
money=500+profit*0.20;
printf("%1.0f,%1.0f\n",profit,money);
}
else
if(profit>10000)
{
money=500+profit*0.25;
printf("%1.0f,%1.0f\n",profit,money);
}
getch();
}
另外附整型与浮点型的基础知识
(1) 存放:
整型数据是转换成相应的补码后直接存放在内存中,而实型与整型的存放不同,它是以指数形式存放,即符号位+小数部分+指数部分.比如:12345在内在中的存放形式是这样的:第一位符号位是’+’,接下来存放的是小数,即0.12345,最后是指数5,而小数部分和指数部分所占的位数因编译系统的不同而不同,不必深究,
(2) 转换:
所有可以转换的数据类型之间的转换都遵循一个规则:按存储单元的存储形式直接传送,从低位开始.比如:将十进制数-123转换为八进制数: 将其补码原样传送由于八进制数无符号(十六进制数也一样),所以最高位的1在八进制数的内在单元中已不代表符号,而代表数值进行运算.不同的编译器和机器所得的结果不一定相同,因为整型变量所占的字节数不同,现以十六位机(另外还与编译器有关,假如整型占两个字节)为例:-123的补码为1111111110000101,将其换算成八进制数为177605,而在32位机上(假如整形占4个字节),其结果就是37777777605.
实型转换成整型时,得到的绝不是你想要的结果,因为实型的存储形式是按指数形式存储的,低位中存储的是指数部分,当传送的时候,只是将指数部分或指数部分加上小数部分的小部分传送给整型变量,得到的结果不可能是你想要的结果.
[
本帖最后由 ggyy4k 于 2010-7-28 15:48 编辑 ]