c语言如何控制小数位数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言如何控制小数位数相关的知识,希望对你有一定的参考价值。

可以在输出时,指定小数点后的有效位数,实现精确到若干位的效果。
要精确到小数点后若干位,则数据类型为浮点型,可能为单精度(float)或双精度(double)。
在C语言中,使用格式化输出函数printf来实现输出。
输出格式为
%.NF
1 %为格式化字符串的引导字符。
2 .N表示指定显示N位小数。
3 F为类型字符,对于float, F值为f, 对于double,F值为lf。
举例:
1 要输出float a=1.23234; 保留3位小数的写法为:
printf("%.3f",a);
2 输出double b=123.345232; 保留4为小数,写法为:
printf("%.4lf",b);

参考技术A

控制小数位数就是通过输出格式说明符来规定的。

举例说明如下:

float f1=3.1415926;
float f2=1234.1415926;
float f3=124.1;
printf("%3.4f", f1);  // 输出结果为:_ _ 3.1416 ( _ 表示空格)
printf("%3.4f", f2);  // 输出结果为:1234.1416
printf("%3.4f", f3);  // 输出结果为:124.1000

printf("%3.4f", f);中的3是控制f的整数部分按3位的固定位宽输出;4是按四舍五入的准则保留4位小数。

注:如果整数部分不足3位,则在前面补空格,超过3位,则按实际位数输出;如果小数部分不足4,则在后面补0

参考技术B 这个很简单。printf("%.2f\n",x);当然x是float型的。输出就是两位小数。就是在f前+小数点+保留小数的位数。本回答被提问者采纳 参考技术C eam>
using namespace std;
int main()
float a,b,c;
cout<<"Please input thress numbers:"<<endl;
cin>>a>>b>>c;
cout<<fixed; //这两句是控制输出数据小数位数
cout.precision(4); //这两句是控制输出数据小数位数
cout<<a<<" "<<b<<" "<<c<<endl;
return 0;

例子中的cout<<fixed; cout.precision(n);必须出现在输出数据之前。n表示输出要 保留几位小数。如输入:23 输出为23.0000
还有很多用法 无法一一举例
参考技术D 默认6位小数,例如输出的格式控制符%7.2f就是符号、整数、小数加上小数点共7位,小数2位,其他类推

C语言,我想设置一个变量num,用来存储某个数据(位数在10位以上),但是不确定数据的类型,如何定义num?

存放的数据可能是整数类型(如5000000000),也可能是小数(如942379104.781),我用的_int64 num,只实现了整数的存储,小数怎么办呢?

联合(union)不知符不符合要求
union mod
long i;
double f;


然后声明
union mod num;//num为mod类型联合变量
赋值的时候
num.i=100;//整数
num.f=100.23;//小数
联合在同一时间只能存储一个值,也就是说不是小数就是整数;
具体的可以百度一下
参考技术A 因为你存储的类型不确定(可能是整数型或小数型),所以建议使用struct 结构体,
先声明 typedef struct num
double d;

int i;

;
让后直接这样定义就行了
存储double型, num d.d=942379104.781;
存储int型, num i.i=5000000000;

顺便说一下,使用union可能导致数据的覆盖或保留。
参考技术B 可以用字符数组,或者统一转换成浮点型,用double存,整数转浮点可以等值转,浮点转整数可不行。。。。 参考技术C 你就用double类型的呗,这个也是64位的数据类型 参考技术D 浮点也有精度问题,和整数相互转换是有误差的。直接用字符串存储吧

以上是关于c语言如何控制小数位数的主要内容,如果未能解决你的问题,请参考以下文章

java中如何控制输出数字位数

c语言中如何保存一个位数不限的小数?

c语言 求小数的位数

C语言中输出时怎样控制小数点后的位数,请举例说明保留1、2、3、4位小数等等,谢谢

C语言中输出时怎样控制小数点后的位数,请举例说明保留1、2、3、4位小数等等,谢谢

C语言中输出时怎样控制小数点后的位数,请举例说明保