可以查看,(例如,用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 -- 这个 不行了。
如果查看一个float类型的变量小数点后有几位数
可以查看,(例如,用sprintf, 转成字符串,一个字符一个字符地统计。)但得到的结果不一定可靠,或不是期望的。原因是 计算机内部用 2进制,我们输入输出用 10进制。 10进制到2进制,小数部分常 “化不净”,2进制再转回10进制,又 “化不净”。float类型的变量,精度只有 6-7 位有效数字,超出...
c语言中关于如何判断一个浮点小数有几位小数的问题
简单的想了下,大概有两种方法:使用 sprintf 等把浮点数转换成字符串的函数,然后统计字符串的位数(感觉怪怪的);不断将这个浮点数乘以10,直到 (int)f 能被 10 整除,那么小数的位数就是乘以 10 的次数 - 1(或者判断整数部分和整个浮点数相等)。
c语言中float型小数点后面几位
用定点格式。float 型 %.2f 就是小数2位, %.1f 就是小数1位。double 型 用 %.2f 就是小数2位, %.1f 就是小数1位。double 型 用 %.2lf 就是小数2位, %.1lf 就是小数1位。
C语言 如何确定输入的float型的小数点位数
因为scanf()里不能确定精度(小数点后的位数),只能确定长度。楼上说的%2f代表小数点2位并不正确,如果你输入的是2.22,这种方式只会取到2。 你可以换一种方式输入,输入的时候不用float型,用char str[100];scanf("%s",str);,这样输进来是个字符型数组。然后你再写个函数查找小数点后多少位。
C语言编程序时怎么控制浮点型输出的小数点精确到几位
使用输出格式说明符来指定精确到小数点位数。如:void main(){ float a=345.234678;printf("%.3f\\n", a) ;} 其中%.3f里的3就表示输出精确到小数点后3位。所以可参考的形式是printf("%m.nf",p);m.nf,指定输出的数据共占m列,其中有n位是小数。如果数值长度小于m,则左端补空格,若数值...
c语言 float类型保留几位啊 怎么确定
float类型默认保留小数点后6位,若是要输出一位或者其他位数,可以按照以下形式进行输出:printf("%.(这里输入要输出的位数)f",x);如输出一位:printf("%.1f",x);
如何用c语言计算小数点后位数(float本身都无法精确)
1、先把浮点数变成字符串,再通过小数点确定小点后面的位数。2、例程:include <stdio.h>#include <string.h>void main() { char * ptr; char strFloat[20]; float number=100.25432; sprintf(strFloat, "%f", number); ptr = strstr(strFloat, "."); if (ptr != ...
c语言如何判断一个数有多少位小数?
当你命令一个变量,并且对该变量赋值.然后向内存条请求分配内存.C语言默认他是float类型的数据.就是单精度浮点数(实数).然后你输出的数据就是默认小数点后4位..还有个双精度浮点数是double..小数点后8位..希望我的回答能够让你满意..
C语言中如何确定输入的float型的小数点位数?
输入后,十进制数变2进制。十进制小数 化 2进制小数 常常 化不尽,所以用 大于小于来判断float型是否正好大于小于某数值是困难的。\\x0d\\x0a简单办法是用字符串方法读入,直接判断字符串。\\x0d\\x0afloat i;\\x0d\\x0achar str[32];\\x0d\\x0aint j,L;\\x0d\\x0ascanf("%s",str);\\x0...
C语言 如何确定输入的float型的小数点位数
输入后,十进制数变2进制。十进制小数 化 2进制小数 常常 化不尽,所以用 大于小于来判断float型是否正好大于小于某数值是困难的。简单办法是用字符串方法读入,直接判断字符串。float i;char str[32];int j,L;scanf("%s",str);sscanf(str,"%f",&i);L = strlen(str);然后查找小数点,for (...