当前位置:首页 » 编程语言 » c语言判断一个数尾数是否为零
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言判断一个数尾数是否为零

发布时间: 2022-06-10 13:23:55

1. c语言问题

补充:
你可以这样理解。
main()
{
int a,i=0.000000000000000000001;
if(a=i-0.000000000000000000001);
printf("00000000000000000");
}
按理说这句应该不会显示那一堆00000000000000的 ,但是却显示了...
本来变量a应该为0的,由于误差导致上面的if句成为:if(a=i),a不等于0了。
所以那句没错。(与源语句没出入吧?)
你看到了结果,没看到过程。

顺便提下,不反对 可爱小爬爬大大的观点。小数部分转换成2进制是乘以2,进位置1的原则。小数乘以2,大部分永远都不可能为一。如:0.456
0.456*2=0.912(没进位,所以第一位是0):0
0.912*2=1.824(进位,第二位是1):01
1.824*2=3.648(进位,第三位是1):011
3.648*2=7.296(进位,第四位是1):0111
取15位0. 011101001011110(后面是无穷的)。
所以大多数情况下,小数是不可能精确表示的。

在帮她补充一点。爬爬说的位0,其实有两种情况。
1:当一个浮点数的尾数为0时(如2.0)(这种情况我认为是可以用==)
2:当阶码的值遇到比它能表示的最小值还小时(这是爬爬说的那种情况)
小数都是以类似科学计数法存储的。这里就不说了。
有兴趣的可以搜索float内存存储。
本不打算说这个的。但是小爬爬这一闹...我不说就无知了。初学者知道这个没什么用。理解我所说的下面的和上面那一段就好。

main()
{
float i=0.000000000000000000001;//20个0
if(i==0.000000000000000000001)//20个0
printf("00000000000");
getch();
}
请看,本身if句条件是满足的,应该输出00000000
但是实际上是不可能输出的。
为什么呢?因为0.000000000000000000001在这里被看成是0。

他说的误差,不是0的误差,是很小的小数的误差。
main()
{
float i=0.000000000000000000001;//20个0
if(i<0.00000000000000000001)//19个0
printf("00000000000");
getch();
}
如果改成这样就正确了(小于一个很小的数)

一个0存储进去,的确怎么搞输出来也是0,但是0.00000000000000000000000001搞出来可能也成0了。误差就在这。

2. c语言中怎么得到任意整数的阶乘末尾的0的个数

先用for循环求阶乘;
然后用取余数的计算判断一下最后一个数字是否为0,比如97010%10,那么就是余数就是0,只要%10就行。余数为0就把他输出,不是0的不用管。也要一个循环来遍历一下。

很简单,自己写好了。
另外任意整数是不现实的,必须定义一个最大值,要不计算机会溢出的,随便给个最大值。比如99999,然后循环求从1到99999的连乘运算。最后循环用%10的方法,是0的就输出,不是0的就罢了。

3. 关于C语言中判断实数是否为零的量··

是要与1e-6代替。。意思是当小于这个数时就认为是等于0.而如果直接判断的话,真的等于0的情况就会缺失。

4. C语言计算一个数字最后几位的0的个数

利用取余啊,先对10取余得到a,再用(原数-a*10)得到个位上的数字,判断是不是零,依次下去,就能得到个数了,我有点事,没办法写出来,就这样的算法,你自己好好想想吧

5. 用C语言程序判断一个浮点型的数是否为零

浮点型,由于精度关系(FLOAT6位),最小分辨0.000001,
当存储一个数时,只有六位是准确的,比如存储0,可能在内存中的值为0.0000001321。。。。。
所以判断浮点型的0值最好用fabs(i) < 0.000001

6. c语言中如何精确判断一个数是否等于零

//1整型
int i=2;
if(i==0)
printf("等于零");
else
printf("不等于零");

//2浮点型
float i=2;
if(fabs(i)<1e-6)
printf("等于零");
else
printf("不等于零");

7. 用C语言实现,判断某位是否为1或是为0

引用一楼的,一楼题目看错了
#include<stdio.h>
int fun(unsigned char a)
{
if((a&0x01)&&(0==a&0x02))//这少了个条件
return 0;
else
return 1;
}
void main()
{
unsigned char a=0x41;
int b;
b=fun(a);
printf("b=%d\n",b);
}

8. C语言里怎样判断数组里的一个元素为空还是为0

NULL表示是空,即什么也没有。
刚设立一个数组时,里面的元素是你定义数组的类型,数值不确定
例如:char ch[4];
现在里面是随机值,同wk_wangkui的回答,
memset(ch,'0',sizeof(char)*4);这时ch里的数值是字符型的‘0’。

9. C语言 判断一个数末尾是否0,如果是则输出yes(如120)如果不是输出no(如111)

我这份,不管多大的都行。

#include<stdio.h>
#include<string.h>
main()
{
chars[1024];
scanf("%s",s);
intlen=strlen(s);
printf("%s ",s[len-1]=='0'?"yes":"no");
}

10. C语言 关于判断一个浮点数是否等于0

浮点数是近似值。 一般用精度判断
比如 判断是否为0 可以用
if(fabs(y)<1e-6)
这样就可以认为是为0 了。
直接==会不正确的。