要算出单精度浮点型数m=67/3,系统默认保留6位有效数字,但是要求m保留3位有效数字,即m=22.333000该怎么搞,不要求输出,不是“%。3f”。如果是1,2,4,5位有效数字又怎么搞??哪位高手告诉我啊!!
是系统保留3位有效数字,不是单纯的输出3位有效数字。现在我已经知道了2~5位有效数字是怎么弄的。
2位是:设n=67,m=(float)(n*100/3)/100;则printf("%f",m);输出的数是22.330000。
3~5位则是把100改为1000,10000等。但还要把n弄成long型,不然要溢出。但我不知道怎么保留一位有效数字,哪位高手能解答啊?只要对我肯定给分。
参考资料:如果您的回答是从其他地方引用,请表明出处
c语言 有效数字计算
两个整数 a \/ b 保留小数点后3位有效数字可以 a* 1000 \/ b 得到的结果就是要的结果的1000倍,如果你要打印可以在适当地方加上小数点 你所谓“知道了”的办法也很有问题。 如果你是计算当中确实需要只保留小数点后n位, 那么你应该始终用定点数计算, 而不是用浮点数。 尤其float型精度比较低...
C语言 只取4位有效数字
sin(x)\/x 数值范围 在 +1 到 -1 之间。取小数4位:y=sin(x)\/x;y = (double) ((int) (y * 10000.0)) \/ 10000.0;如果取有效数字,你可以用y的绝对值判断数值范围:if (fabs(y) >= 0.1) y = (double) ((int) (y * 10000.0)) \/ 10000.0;else if (fabs(y) >= 0....
怎样用c语言编写程序计算0.01的真值?
方法1、计算f(0.01)的真值。其代码 format long g %将输出格式设置为长固定十进制小数点格式 x=0.01;fx=(exp(x)-1-x)\/x^2 format 方法2、使用六位有效数字计算 digitsOld = digits(7);x=0.01;fx0=exp(x);fx0=(vpa(fx0,7)-vpa(1+x,7))\/ vpa(x^2,7);fx1=vpa(fx0,6)...
c语言 写一个程序,取一位有效数字
char *ch = new char;printf("请输入数字:");gets(ch);RMS = getRMS(ch);if(RMS == -1){ printf("计算出错");}else{ printf("%s%f","有效数字为:\\n",RMS);} system("PAUSE");return 0;} 支持小数计算 哥啊,我都已经实现了,给分吧!
C语言有效数字问题
之所以有%f和%lf,完全是为了书写规则的完善,没有实际意义。都是double型的。f系统默认输出6个小数点后的位,小数点前的不管多少都输出 为什么可以完整地把12.123456输出出来,单精度为6~7为有效数字 g 当指数小于-4或大于等于精度时采用%e或%E的格式,否则采用%f的格式。尾部的0与小数点不打印。
关于c语言可输出的不失真的位数
用long double可以确保18~19位有效数字,这是实型,20!输出时把小数部分去掉,比较符合我们的习惯。要再大的话就得用高精度计算了,只要你的电脑受得了,理论要多少位有效就多少位有效,不过高精加、减、乘比较简单,除法就复杂了许多,开方更复杂了估计你没这耐心设计程序,我全部用数组实现。
本人自学c语言,零基础,菜鸟。
1.系统先把所有的float转换为double类型运算,最终得到的结果截取前七个作为有效数字,这样做可以使计算结果更准确。2.有效数字:从左边第一个不是0的数字起,到精确到的位数止,所有的数字都叫做这个数的有效数字。比如:1.24的有效数字就是 1、2、4。0.24 的有效数字就是 2、4。3. 同样的二...
c语言中的单精度数据的有效位数是什么意思?
c语言中的单精度数据的有效位数是7位。c语言中的单精度浮点数的实际有效精度为24位二进制,这相当于 24*log102≈7.2 位10进制的精度。尾数用23位存储,加上默认的小数点前的1位1,2^(23+1) = 16777216。因为 10^7 < 16777216 < 10^8,所以说单精度浮点数的有效位数是7位。
C语言数据类型有效数字问题
char->int->long int ->float->double 2.因为双精度的数,其有效位比单精度更多,有效位越多,当然计算的结果越精确。但是有效位越多,数据处理也就越多,因而运算速度会降低。在c中浮点型常量如果没有说明,一律看做是double型。有说明的除外,如:3.21f,这个就是float型。
c语言计算圆周率,保留5位有效数字 4*(1-1\/3+1\/5-1\/7+1\/9...)_百度知...
int main(){ float fPI,fTmp;int i;int sign; \/\/ 正负符号 i=1;sign=1;fPI=0.0;do { fTmp=1.0\/i;fPI=fPI+4*sign*fTmp;i=i+2;sign = -sign;} while ( 4 * fTmp > 0.000001);\/\/当某一项小于0.000001就结束循环,这个数设置越小,精度就越高,这里精确到小数点后5位了。\/\/...