www.rtmj.net > C语言输出双精度数的小数

C语言输出双精度数的小数

1、C语言中,输出double类型(双精度实型)以及float类型(单精度实型)时,默认输出6位小数.比如这样的代码:double a = 1; printf("%lf\n", a); 输出会是1.0000002、但是有时六位会显得很长,没必要.比如计算平均分,一到两位小数就足够了.可是有时六位又不够,需要更多位小数,比如计算高精度平方根.这时可以用printf的格式控制.如果要输出n位小数,那么可以用%.nlf的格式.其中n为数字.如要输出10位小数,那么 printf("%.10lf\n", a); 即可.

双精度 小数点后面保留15位 单精度 小数后面保留7位

ls的没有做四舍五入处理.#include main() { double a,b,c,rzt; scanf("%lf%lf%lf",&a,&b,&c); rzt=(a+b+c)/3; rzt=(int)(rzt*10+0.5)/10.0; //四舍五入处理 printf("%.1lf\n",rzt); }

单精度6位,双精度12位

双精度浮点(长双精度)型数据用%lf输出 短整型数据用%u输出%d 有符号10进制整数 %i 有符号10进制整数 %o 有符号8进制整数 %u 无符号10进制整数 %x 无符号的16进制数字,并以小写abcdef表示 %X 无符号的16进制数字,并以大写ABCDEF表示 %F/f 浮点数 %E/e 用科学表示格式的浮点数 %g 使用%f和%e表示中的总的位数表示最短的来表示浮点数 G 同g格式,但表示为指数 %c 单个字符 %s 字符串 %% 显示百分号本身

单精度实数在内存中占32bit 有效数字为6~7位,双精度实数占内存单元为64bit 有效数字为15~16位.所以双精度数不是小数点后有两个小数的数.d*=10; d+=0.5; d/=10; 这三条语句是对小数点后第二位小数四舍五入.例如d=1.26; d*=10; // 12.6 d+=0.5; //13.1 d/=10; //1.31 printf("%.1lf\n",d); // 1.3 很明显,若小数点后第二位小数大于等于5,就会往前一位进位.就是四舍五入了.其实 d+=0.05; 就能实现了.

C标准库里有limits.h 和 float.h 这两个头文件,里面的定义了各种类型的整数、浮点数的上下限值,用printf输出它们就行了,要注意的是:%d对应int, %ld对应long,%lld对应64位整数如long long或__int64,%f对应double

c语言用scanf()函数输入双精度数据时,采用的数据格式参数必须是%lf,如:double d;scanf("%lf", &d );scanf("%f,%f",&a,&b);不能输入双精度数据吗?当然不能.主要原因在于double和float类型的大小不同:1. double类型数据在内存中

首先要加#include,定义非整形变量double或float,在最后用print("%.几位小数f",你要输出的变量);

利用格式化字符串输出,例如:Console.WriteLine("{0:F15}",3.1415926);将输出3.141592600000000F代表固定精度格式,F15代表小数点后保留指定位数小数

友情链接:qwfc.net | 5689.net | beabigtree.com | gyzld.cn | jclj.net | 网站地图

All rights reserved Powered by www.rtmj.net

copyright ©right 2010-2021。
www.rtmj.net内容来自网络,如有侵犯请联系客服。zhit325@qq.com