如果查看一个float类型的变量小数点后有几位数

作者&投稿:褒明 (若有异议请与网页底部的电邮联系)
在c语言中如何查看一个float类型的变量小数点后有几位数?~

可以查看,(例如,用sprintf, 转成字符串,一个字符一个字符地统计。)但得到的结果不一定可靠,或不是期望的。
原因是 计算机内部用 2进制,我们输入输出用 10进制。 10进制到2进制,小数部分常 “化不净”,2进制再转回10进制,又 “化不净”。
float类型的变量,精度只有 6-7 位有效数字,超出7 位又引进 “截断误差”。
例如:
float x = 0.0000000000000000012300; 眼睛可以看出有20位小数,不是22位小数。
但通过计算机,化不净,引进 截断误差:
printf("%g
",x); //1.23e-018 --- 这个可以,18+2位得 20
printf("%.15g
",x); // 1.22999999327834e-018 -- 这个 不行了。

float 类型总共只能表示7位有效数字,
如果需要非常准确的数字,请考虑使用 Decimal 数据类型

可以查看,(例如,用sprintf, 转成字符串,一个字符一个字符地统计。)但得到的结果不一定可靠,或不是期望的。

原因是 计算机内部用 2进制,我们输入输出用 10进制。 10进制到2进制,小数部分常 “化不净”,2进制再转回10进制,又 “化不净”。
float类型的变量,精度只有 6-7 位有效数字,超出7 位又引进 “截断误差”。
例如:
float x = 0.0000000000000000012300; 眼睛可以看出有20位小数,不是22位小数。
但通过计算机,化不净,引进 截断误差:
printf("%g\n",x); //1.23e-018 --- 这个可以,18+2位得 20
printf("%.15g\n",x); // 1.22999999327834e-018 -- 这个 不行了。

默认六位小数,不够就补零,比如讲1赋给浮点型变量a,输出是1.000000

理论上是6位,但是输出时,可以限制小数位。

printf("%15.15g",var);

如果查看一个float类型的变量小数点后有几位数
答:可以查看,(例如,用sprintf, 转成字符串,一个字符一个字符地统计。)但得到的结果不一定可靠,或不是期望的。原因是 计算机内部用 2进制,我们输入输出用 10进制。 10进制到2进制,小数部分常 “化不净”,2进制再转...

怎么写一个SQL语句查询 我的字段是float型的, 如何让它如果是空则显示...
答:1、你在数据时的字段是float类型,但是在实体类中你可以把该字段设置成string类型。2、那就建个视图 查的时候sql就这样,假设该字段名称为 code select id,name,case when convert(nvarchar(50),code) is null then '...

怎样识别一个数是单精度数还是双精度数?
答:数后加上字母f,如 2.3f、1.0f 等此类是单精度浮点数(float) 。数直接写出的数字,如 2.3、1.0 等此类是 double 型的。使用double声明的变量和常数是双精度浮点数。使用float声明的变量和常数是单精度浮点数。C ...

float类型数据怎么判断
答:还有一种办法就是用四舍五入后,取整数进行判断,如:float a=0.37; int b; a+=0.005; b=a*100; if ( b==37 ) ...

在语音中,输入一个实数,怎样判断它是int,float,还是char类型?
答:int是整数1,2,3,之类,float指实数1.256000,之类,char指符号

怎样判断一个数值是否为合法的浮点常量?
答:这我学过,规则好像是:① 浮点数的小数点两旁至少要有数字;② E或e的前面必须有数字,E或e的后面必须为整数,即其前后都必须有数字;③ 每个浮点数都是双精度的。带有E或e的数值是通常科学数值表示法的C语言写法。

有一个浮点型变量 X,如何判断它是否为 0
答:假定X 的绝对值小于 一个某个数则为0。例如:include <stdio.h> include <float.h> include <math.h> int main(){ double X= 2.22507e-308;printf("%g %g\n",X, DBL_MIN);if (fabs(X) < DBL_MIN) ...

float和double类型的大小为
答:float:浮点型数据类型,FLOAT 数据类型用于存储单精度浮点数或双精度浮点数。此表示形式为 float 类型提供了一个大约在 -3.4E+38 和 3.4E+38 之间的范围。double(双精度浮点型)是计算机使用的一种资料型别。它可以...

一个C语言问题。
答:void main(){ float f = 12.345678;float h = 0;unsigned char* ptrf = (unsigned char*)&f;unsigned char* ptrh = (unsigned char*)&h;FILE* file;int i;// 把float数据一个字节一个字节的从f写到文件 fil...

如何把一个 float 类型的数据转换为 int 类型
答:强制类型转换 比如:float a = 10.5;int b = (int)a;这样 就转换了,但是不推荐高精度转低精度 会丢失精度的 就像这个,a是10.5 转换后变成10了小了太多