『壹』 c语言有效数字问题

输出控制符是不分单精度双精度的,之所以有%f和%lf,完全是为了书写规则的完善,没有实际意义。都是double型的。
%f系统默认输出6个小数点后的位,小数点前的不管多少都输出
为什么可以完整地把12.123456输出出来,单精度为6~7为有效数字

%g 当指数小于-4或大于等于精度时采用%e或%E的格式,否则采用%f的格式。尾部的0与小数点不打印。

『贰』 C语言中关于“有效数字”的问题

当你输入2.2e2时a=4.84,而输入2.2e-2时a=0....。它们的是float型,放在内存中是:2.2e2=01000011 0,1011100 00000000 00000000,2.2e-2=00111100 1,0100100 00111001 01011000。这两串二进制数的“,”前是符号和阶码,我们不管它,后面是这两个数的二进制原码,按C规则它们是大于1小于2、且不显示整数1的尾数。显然,前者是4.84的完全表达,而后者是0.2066...2066...的无限循环小数,不能用一串二进制精准表达(这里不作四舍五入,只是简单地把不能表达的位略去),所以得出的数总比输入的数“小”。但“精度”已足够了,误差<10^-7。其实十进制小数也不能完整表达2.2e-2,把0....无论从哪里截短,都要比2.2e-2小。输出2.199999988079071e-002中的88079071通常是为了补齐C的科学表示法小数点后的位数而由系统随机添加的——这在教科书“数据类型”章节中有介绍。供参考……

『叁』 C语言中整型数据的有效位数是多少

1、从二进制的角度来看整数的有效位数,要从整数的编码说起,有符号整数编码包括原码、反码和补码三种常规编码方式,原码表示即最高位为符号位,0表示正数,1表示负数,如果以8位二进制位来表示,符号位要占1位,所以有效位数7位。 要获取整型类型在当前编译环境中所占的位数,可以使用sizeof运算符。

#include<stdio.h>
intmain()
{
printf("sizeofint:%d ",sizeof(int));
return0;
}


2、如果要计算一个整数中的有效位数,可以不断的整除10求出来。如下代码

#include<stdio.h>
inthow_many_int(ints)
{
inti=0;
while(s!=0)
{s/=10;i++;}
returni;
}
intmain()
{
inttest;
do
{
printf("输入整数:");
scanf("%d",&test);
printf("有%d位 ",how_many_int(test));
}while(test!=~0);
return0;
}


说明:输入数值超出int所表示的范围,编译器会对输入数进行取模操作。输出-1结束循环,退出程序。

『肆』 C语言中如何输入确定的有效数字

printf不能控制输出有数字。想控制得自己写程序,如下:

char
ss[20];

sprintf(ss,
"%lf",
s);

char
*p
=
strchr(ss,
'.');

if
(p!=NULL)

{

if
(p-ss
<
11)

ss[11]=0;

}
这时候ss中就是一个合法的数字了。简单写的,没考虑超过10位的整数,也没考虑输出结果有没有10位。只是超过了10位就截尾。

『伍』 C语言如何控制输出数字的有效位数

5位有效位数
printf("%.5g",a) //a是变量名
按四舍五入保留
但保留后最后为0几位会被去除,比如2.0000只会显示2,其他情况可以满足

『陆』 c语言输出时怎么保留有效数字

通过printf()函数的参数控制,这是一种方法:
printf("%.3f", 1.4567); //保留小数点后三位
用0.0这种形式去试吧

『柒』 C语言,有效位数的保留

一种:把sum转换为字符串,从头扫描,从非0开始计数,记到有效位为止,输出这一段字符串

还有一种就是应该是printf("%#.#d", n, m)可以设置有效数字,不过我忘记了是c99还是c89的。

『捌』 c语言中怎么保留一位有效数字

1、在C语言中一个数保留1位小数可以通过精度限定符来完成,精度限定符由一个点号后跟一个整数组成。如果要限定小数点后面一位的类型为0或者5,可以使用先乘取整再除的方法进行操作。
2、例程:

#include<stdio.h>
intmain(){
dobulea=1.23456;
printf("%.1f",((int)a*2)/2.0);//使用精度限定符%.1f,输出:1.0
return0;
}

『玖』 C语言中什么是一个数的有效数字

在C语言中,一个数的有效数字取决于该数字所属的类型。

举例如下:
如果数12.3是int类型,那么12就是该数的有效数字,小数部分无效;
如果数12.3是float类型,那么12.3就是该数的有效数字。
如果数字超过其类型所能表示的范围,那么其就没有效数字。