可以在输出时,指定小数点后的有效位数,实现精确到若干位的效果。
要精确到小数点后若干位,则数据类型为浮点型,可能为单精度(float)或双精度(double)。
在C语言中,使用格式化输出函数printf来实现输出。
输出格式为
%NF
1 %为格式化字符串的引导字符。
2 N表示指定显示N位小数。
3 F为类型字符,对于float, F值为f, 对于double,F值为lf。
举例:
1 要输出float a=123234; 保留3位小数的写法为:
printf("%3f",a);
2 输出double b=123345232; 保留4为小数,写法为:
printf("%4lf",b);
在C的编程中,总会遇到浮点数的处理,有的时候,我们只需要保留2位小数作为输出的结果,这时候,问题来了,怎样才能让cout输出指定的小数点后保留位数呢?
在C语言的编程中,我们可以这样实现它:
[cpp] view plain copy
printf("%2f", sample);
在C++中,是没有格式符的,我们可以通过使用setprecision()函数来实现这个需求。想要使用setprecision()函数,必须包含头文件#include <iomanip>。使用方式如下:
[cpp] view plain copy
cout << "a=" << setprecision(2) << a <<endl;
这时候,我们会发现,如果a的值为020001,输出的结果为a=02,后面第二位的0被省略了。如果我们想要让它自动补0,需要在cout之前进行补0的定义。代码如下:
[cpp] view plain copy
coutsetf(ios::fixed);
cout << "a=" <<fixed<< setprecision(2) << a <<endl; //输出a=020
这样,我们就可以得到020了。当然,如果想要关闭掉补0,只需要对fixed进行取消设置 *** 作。[cpp] view plain copy
coutunsetf(ios::fixed);
cout << "a=" << setprecision(2) << a <<endl; //输出a=02
我们的输出结果就又变回a=02了。参考代码
[cpp] view plain copy
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
float a = 020001;
coutsetf(ios::fixed);
cout << "a=" <<fixed<< setprecision(2) << a <<endl; //输出结果为a=020
coutunsetf(ios::fixed);
cout << "a=" << setprecision(2) << a <<endl; //输出结果为a=02
return 0;
}
1 方法有强制转换、使用库函数round,ceil,floor等
2 使用示例
#include<stdioh>#include<mathh>
int main(){
float f = 125;
int a = (int)f;//强制转换 直接取整
int b = round(f);//四舍五入取整
int c = ceil(f);//向上取整
int d = floor(f);//向下取整
printf("a=%d\nb=%d\nc=%d\nd=%d\n", a, b, c, d);
getchar();
return 0;
}
3 运行结果
c语言中用于描述小数的数据类型是float和double,float类型表示单精度浮点数,double表示双精度浮点数。
c语言中浮点数常量有两种表示方式:
1、定点表示:(必须有小数点)
如:0123,
123,
1230。2、指数表示:(e或e之前必须有数字,指数必须为整数)如:123e3
,123e2,
123e4。错误的写法:e-5
,12e-35,e3。
注意:浮点数常量默认为double类型,如果浮点数常量表示float类型,请在末尾添加小写的f或者大写的f,表示此常量为单精度浮点常量。
在C语言中,我们使用float、double 来表示小数,
在内存中的形式如下所示:
类型 符号 指数 尾数
float 1bit 8bit 23bit
double 1bit 11bit 52bit
输出 float 使用 %f 控制符,输出 double 使用 %lf 控制符,实例如下所示:
#include <stdioh>
#include <stdlibh>
int main()
{
float a=128101;
float b=0302f;
float c=123002398f;
double d=123;
double e = 78429;
printf("a=%f \nb=%f \nc=%f \nd=%lf \ne=%lf\n", a, b, c, d, e);
system("pause");
return 0;
}
运行结果:
a=128100998
b=0302000
c=1230024
d=123000000
e=78429000
对代码的说明:
1) %f 默认保留六位小数,不足六位以 0 补齐,超过六位按四舍五入截断。
2) 将整数赋值给 float 变量时会转换为小数。
3) 小数默认为 double 类型,加上后缀f才是float类型。
4) 由于内存有限,小数的精度受限,所以输出 a 时只能获得一个近似数。
以上就是关于C语言如何输出小数点后若干位小数全部的内容,包括:C语言如何输出小数点后若干位小数、C语言中输出时怎样控制小数点后的位数,请举例说明保留1、2、3、4位小数等等,谢谢、怎样用c语言把一个小数才能化为整数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)