公告: 为响应国家净网行动,部分内容已经删除,感谢读者理解。
话题:c++计算分数的浮点数值回答:/* MODF.C */ #include lt;math.hgt; #include lt;stdio.hgt; void main( void ) { double x, y, n; x = -14.87654321; /* Divide x into its fractional */ y = modf( x, amp;n ); /* and integer parts */ printf( "For %f, the fraction is %f and the integer is %.f\n", x, y, n ); }
参考回答:#includelt;iostreamgt; using namespace std; int main() { double a,b,c; cinab; c=a%b; coutlt;lt;a%blt;lt;endl; }
话题:C语言关于分数的浮点数值的计算回答:#include int main(){int a,b;double c;scanf("%d %d",amp;a,amp;b);c=a*1.0/b; /*两个整数相除结果还是整数,将a先乘以浮点数1.0,使结果为浮点数*/printf("%.9lf",c);system("pause");}话题:C语言关于分数的浮点数值的计算回答:#include stdio.hint main(){ int a,b; double c; scanf("%d %d",a,b); c=a*1.0/b; /*两个整数相除结果还是整数,将a先乘以浮点数1.0,使结果为浮点数*/ printf("%.9lf",c); system("pause");}话题:c++计算分数的浮点数值回答:/* MODF.C */#include math.h#include stdio.hvoid main( void ){ double x, y, n; x = -14.87654321; /* Divide x into its fractional */ y = modf( x, n ); /* and integer parts */ printf( "For %f, the fraction is %f and the integer is %.f\n", x, y, n );}
参考回答:#includelt;iostreamgt;using namespace std;int main(){double a,b,c;cinab;c=a%b;coutlt;lt;a%blt;lt;endl;}话题:求计算浮点型数据数值范围原理~~~回答:问题的关键是要搞清楚浮点数的数据结构。 首先,单精度定用8位二进制表示阶数,即最大表示为2的128次方,把这个数算出来是3.4028236692093846346337460743177e+38 所以单精度的上限值是 3.4X10^38,单精度有一位单精度有一位是符号位,定着这个浮点数的正负,所以取值范围是-3.4x10(-38)~3.4x10(38)。其次,除了8位阶数和1位符号数外,剩下的23位就是有效数字,那么只需要算出2的23次方的倒数(即2的-23次方)2^(-23)= 0.00000011920928955078125,数数看,小数点后面一共有6个0,第7个数字才是1,所以说分辨率是0.000 000 1,即有效数字是6~7位。话题:两个整数a和b分别作为和分母,既分数回答:#include stdio.h int main() { double a,b,c; scanf("%lf %lf",a, b); c=a/b; printf("%.9lf", c); return 0; }
参考回答:把它们其他的一个转换为float 或 double就得了 (float)a/b (double)a/b
话题:请问算浮点数据的编码方式吗?回答:这个我知道:任意一个十进制数 N 可以写成 N=10E.M (2.3)同样,在计算机中一个任意进制数 N 可以写成 N=Re.m (2.4)m :尾数,是一个纯小数。 e :比例因的指数,称为浮点的指数,是一个整数。 R :比例因的基数,对于二进计数值的机器是一个常数,一般定R 为2,8或16。 一个机器浮点数由阶码和尾数及其符号位组成(尾数:用定点小数表示,给出有效数字的位数决定了浮点数的表示精度;阶码:用整数形式表示,指明小数点在数据中的位置,决定了浮点数的表示范围。):32位的浮点数中,S:浮点数的符号位,1 位,0表示正数,1表示负数。M:尾数,23位,用小数表示,小数点放在尾数域的最前面。E:阶码,8 位阶符采用隐含方式,即采用移码方式来表示正负指数。移码方法对两个指数大小的比较和对阶作都比较方便,因为阶码域值大者其指数值也大。采用这种方式时,将浮点数的指数真值e 变成阶码E 时,应将指数 e 加上一个固定的偏移值127(01111111),即 E=e+127.[例1] 若浮点数x的二进制存储格式为(41360000)16,求其32位浮点数的十进制值。[解:] 将十六进制数展开后,可得二进制数格式为指数e=阶码-127=10000010-01111111=00000011=(3)10包括隐藏位1的尾数1.M=1.011 0110 0000 0000 0000 0000=1.011011于是有x=(-1)s*1.M*2e=+(1.011011)*23=+1011.011=(11.375)10 [例2] 将十进制数数20.59375转换成32位浮点数的二进制格式来存储。 [解:] 首先分别将整数和分数部分转换成二进制数:20.59375=10100.10011然后移动小数点,使其在第1,2位之间10100.10011=1.010010011*24 e=4于是得到:S=0, E=4+127=131, M=010010011最后得到32位浮点数的二进制存储格式为:0100 0001 1010 0100 1100 0000 0000 0000=(41A4C000)16话题:C语言中,浮点型的数值范围是如何算出来的?回答:浮点型数的2进制表达方法 IEEE 754 有详细定,各编译器参照此定执行。例如,符号位,指数符号位,指数位,尾数位 各几位,如何表达,NaN(不是一个数字叫NaN)如何表达, 无穷(Infinity) 如何表达,正0负0如何表达,还有 Denormalized 如何表达,Normalized 如何表达。很繁琐。自己用的编译器定,可以见编译器带的头 float.h 和 limits.h例如:#define LDBL_MANT_DIG 64#define LDBL_MAX 1.189731495357231765e+4932L#define LDBL_MAX_10_EXP 4932#define LDBL_MIN 3.3621031431120935063e-4932L。。。。话题:浮点型数据的运算误差回答:首先,看一下浮点数误差原因浮点数的误差的产生一般由于两个原因1)由于计算机内部以二进制保存,所以十进制的有限位的小数,在计算机内部会是一个无限位的小数。例如 十进制的0.9虽然只有一位小数,转成2进制是无限循环小数0.11100110011001100112)计算机保存浮点数的精度有限,例如float可以保留十进制最多7位(二进制23位)有效数字,double 可以保留十进制15~16位(二进制52位)有效数字。那有效数字以后的就被忽略了。例如上面的0.9的表示度所限,精度以后的就被忽略了,这样float时,它是0.89999998double时,它是0.90000000000000002每一次对浮点数的运算都会导致小误差,所以比较的时候不能用等于号 要这样写 i - 10.0
话题:浮点数的计算?回答:原码:在二进制数前加了符号,0表示正数,1负数!补码:对于正数, 补码就是原其原码;对于负数,就是其原码(符号位除外)按位取反后最后加1 反码:对负数原码的按位取反,包括符号位,正数与原码相同浮点数的计算参照http://hi.baidu.com/avatar%B9%E2%D3%B0/blog/item/2990691e3c8540f41bd57695.html