Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在不使用字符串的情况下在C中查找浮点数的长度。。。?_C - Fatal编程技术网

如何在不使用字符串的情况下在C中查找浮点数的长度。。。?

如何在不使用字符串的情况下在C中查找浮点数的长度。。。?,c,C,例如,1.54的长度是4,包括小数点。我需要一个C代码,以同样的方式查找长度,但不带字符串,而且还需要snprintf计算浮点数十进制表示形式的长度没有多大意义,因为它的底层表示形式是二进制的。例如,十进制形式的0.1会产生无限个二进制数字 C没有固有的十进制类型,因此您必须使用某种特殊类型来表示数字,并删除右边不重要的数字。C字串并不是最糟糕的选择。长度由您在打印时设置 #include <stdio.h> int main () { float x = 0.2; dou

例如,1.54的长度是4,包括小数点。我需要一个C代码,以同样的方式查找长度,但不带字符串,而且还需要snprintf

计算浮点数十进制表示形式的长度没有多大意义,因为它的底层表示形式是二进制的。例如,十进制形式的0.1会产生无限个二进制数字


C没有固有的十进制类型,因此您必须使用某种特殊类型来表示数字,并删除右边不重要的数字。C字串并不是最糟糕的选择。

长度由您在打印时设置

#include <stdio.h>

int main ()
{
  float x = 0.2;
  double y = 0.2;

  int size_x = sizeof(float);
  int size_y = sizeof(double);

  printf("Variable x has a size of %i. But i can print if as different lengths: %f, %3.2f, %g, %e\n", size_x, x, x, x, x);
  printf("Variable y has a size of %i. But i can print if as different lengths: %lf, %3.2lf, %lg, %le\n", size_y, y, y, y, y);

  return 0;
} 
#包括
int main()
{
浮动x=0.2;
双y=0.2;
int size_x=sizeof(float);
int size_y=sizeof(双精度);
printf(“变量x的大小为%i。但是如果长度不同,我可以打印:%f、%3.2f、%g、%e\n”,大小为x,x,x,x);
printf(“变量y的大小为%i。但如果长度不同,我可以打印:%lf、%3.2lf、%lg、%le\n”,大小为y,y,y,y,y);
返回0;
} 

您是否尝试过与此要求相关的内容?+1@Chandru以及。。。为什么需要在不使用字符串的情况下执行此操作?浮点值的长度取决于您指定的精度。除非你要求小数点后两位,否则你不会得到像“1.54”这样的数字。很简单。只需将其乘以10,直到该数字是一个不带小数点的完整整数(检查是否为by'(int)num==num'),然后将其除以10,每个除法向长度变量(首先初始化为零)添加1,直到该数字为零。两个while循环