输出精度问题

来源:互联网 发布:2016最好的网络武侠剧 编辑:程序博客网 时间:2024/05/29 11:42
#include <stdio.h> int main() { int a=1234; float b=123.456;double c=12345.54321;printf("\n%2d,%2.1f,%2.11f",a,b,c);}/*  %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 字符串   %% 显示百分号本身*/ /* %md: m为指定输出数据的宽度 如果位数小于m,则左端补以空格,如果大于m,则按实际位数输出显然a=1234的位数是4 大于%2d中指定的长度2 按实践位数输出 所以结果为1234%m.nf格式:指定输出数据宽度为m位,其中小数占n位,如果数值长度小于m,则左端补空格,%-m.nf与上差不多,只是如果数值长度小于m,则右端补空格,大于的话就按原长度输出%2.1f就是指长度2位,含一位小数位,由于原长度大于2,所以原样输出,但只能右一位小数,所以结果是123.4%2.11f,就是含11位小数,显然长度不够,则右端补零 结果位12345.54321000000%e:不指定输出数据所占的宽度和数字部分的小数位数,有的C编译系统自动指定给出数字部分的小数位数为6位,指数部分占5位(如e+002),其中"e"占1位,指数符号占1位,指数占3位,总的指数部分占5位。数值按规范化指数形式输出。例如:printf("%e",123.456);输出如下:1.234560e+002(共13列,有的系统的规定有所不同);%m.ne 输出的数据共占m列,其中有n位小数。如果数值长度小于m,则左端补空格。s格式符,用来输出字符串。%m.ns 输出占m列,但只取字符串中左端n个字符。这n个字符输出在m列的右侧,左补空格。*/ 
原创粉丝点击