查找数字中尾随零的数量

finding number of trailing zeroes in a number

本文关键字:数字 查找      更新时间:2023-10-16

我想找到数字中尾随零的数量,所以我编写了以下代码。它对某些数字工作正常,但对于更大的数字,它开始显示异常。就像当我输入数字"12345678"时,它显示零 0 是正确的,但当我输入"123456789"时,它显示一个零,我的代码中可能出现什么错误???

#include<iostream>
#include<math.h>
using namespace std;
int main(){
int n = 0;
float s;
cin>>s; //the number to be given as input
for(int j = 0;j <100;j++){
s = s/10;
if(s == floor(s)){
n++;
}else{
break;
}
}
cout<<n<<endl;
return 0;
}

浮点数的精度有限。通常,float 是 32 位数字,double 是 64 位数字。如果整数小于或等于 16777216(为 2^24),则 Float 可以精确地存储整数。

因此,当123456789被读入浮点变量时,将具有不同的值,它变得123456792。在这一点上,没有理由计算尾随零。

如果整数小于或等于 9007199254740992 (2^53),Double 可以精确地存储整数。

unsigned long long int可以存储小于 2^64 的整数。如果选择这种方式,请使用此条件检查尾随零:if (number%10==0)

如果您只想计算尾随零,仅此而已,请改用std::string。通过这种方式,您可以根据需要处理任意大的数字。