#include iostream
目前成都创新互联公司已为1000多家的企业提供了网站建设、域名、网络空间、成都网站托管、企业网站设计、二连浩特网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
#include "math.h"
#include "stdlib.h"
int main(int argc, char** argv)
{
int m=0,n=0,z=0,x=0;//m为输入的第一个数 n为第二个数 z为整数部分 x为小数部分
double dm,dn,s=0; //S是商,dm,dn分别为输入的第一,二个数的double型
printf("请输入两个正整数:");
scanf("%d,%d",m,n);
dm=(double)m;
dn=(double)n;
s=dm/dn;
z=(int)s;
x=(double)(m%n)/n*(1000000);
printf("\n商:%lf 整数部分是:%d, 小数部分是:%d\n",s,z,x);
system("pause");
return 0;
}
除了一开始用float进行定义之外,后面进行除法运算的时候要加.0,否则算出的结果电脑会自动取整~~如:3/2的结果和3.0/2的结果就不同~~因为没有定义3/2为浮点型,所以3/2自动取整,结果等于1而3.0/2,由于预先用浮点型表示其结果显然为:1.5 除法运算符" / ",如果是两个整数相除结果为整数如果需要保留小数时 必须将其中一个除数转换为浮点数 #i nclude stdio.h #i nclude math.h main() { float x; float y; printf("Enter x:"); scanf("%d",x); y=fabs((5*x+1)/(x*x+1)); printf("y is %f\n",y); } 或者 #i nclude stdio.h #i nclude math.h main() { int x; float y; printf("Enter x:"); scanf("%d",x); y=fabs((float)(5*x+1)/(x*x+1)); printf("y is %f\n",y); }
必须转换其中一个为浮点数才能除得小数字。
之后用数字格式化语句限制小数位数就好了。
1、可以利用C语言的强制转换规则。
C语言规定,当浮点数强制转换为整型类型时,只保留整数部分。
所以对于浮点数,比如float类型a, 执行(int)a后的值就是整数部分。
这样当执行a-(int)a时,得到的就是小数部分的值了。
2、如果该功能经常使用,那么可以定义一个带参数的宏
#define DECIMAL(X) (x-(int)x)
这样执行DECIMAL(a)得到的值就是t的小数部分。
把变量改成双精度型的就可以了。
具体步骤如下:
把变量改成双精度型(double)的就好了,dev-c++用的编译器是gcc,在我的电脑上实验双精度的没问题,如果不行的话可以换成浮点型变量(float),但是会损失精度。
或者结果用%f来输出,单精度小数。
小数点后的两位小数变为整数,再加上0.5,如果小数点后一位大于等于5则会进一位,整数与浮点数相除结果为浮点数,即实现了要求。
当两个整数相除时,由于小数点以后的数字会被截断,使运算结果为整数,故此时若希望得到运算结果为所预期的浮点数,则此时必须将两整数其一或是全部强制转换类型为浮点数。
拓展:C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。它由美国贝尔研究所的D.M.Ritchie于1972年推出,1978年后,C语言已先后被移植到大、中、小及微型机上,它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。