输出精度问题

本文主要探讨了在C语言编程中遇到的精度问题,包括浮点数的表示误差、计算精度损失以及如何通过特定方法优化精度。通过对C语言标准库的深入理解,读者将了解到如何更精确地进行数值计算,并掌握避免精度问题的关键技巧。
#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列的右侧,左补空格。
*/ 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值