计算 float 中 `.` 之后的位数?

标签 c floating-point

这是一道面试题。 如何计算 float 中 . 之后的位数。

例如如果给出 3.554 输出=3

对于 43.000 输出=0。 我的代码片段在这里

double no =3.44;
int count =0;
while(no!=((int)no))
{
    count++;
    no=no*10;
}
printf("%d",count);

有些数字不能用float类型表示。例如float类型中没有73.487,c中float表示的数为73.486999999999995来近似

现在如何在无限循环中解决它。

注意:在 IEEE 754 规范中,32 位 float 被划分为 24+7+1 位。 7位表示尾数。

最佳答案

我怀疑这就是您想要的,因为问题要求的是 float 通常没有意义的东西,但答案如下:

int digits_after_decimal_point(double x)
{
    int i;
    for (i=0; x!=rint(x); x+=x, i++);
    return i;
}

关于计算 float 中 `.` 之后的位数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17837654/

相关文章:

c - 隐式函数转换是将双参数转换为 int 参数

python - 匹配 Python 字典中的实数键

c++ - 由于舍入行为导致 float 和错误结果

c - 如果我在特定 block 的内存中有地址的整数版本,我该如何指向它?

c - asm 关键字作为 C 中的标识符名称?

ios - 有没有办法在 swift 或 ObjC 中为 IPv4 和 IPv6 发出单独的 DNS 请求

c++ - CreateDC 因网络打印机而失败 - 错误代码 1801

c++ - 将 4 个原始字节转换为 32 位 float

c - 错误 : invalid operands to binary expression ('float' and 'float' )

python - numpy.allclose() 比较数组和 float