
正文
c语言判断小数点个数,c语言如何判断小数点后位数
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
C语言中如何确定输入的float型的小数点位数?
输入后,十进制数变2进制。十进制小数 化 2进制小数 常常 化不尽,所以用 大于小于来判断float型是否正好大于小于某数值是困难的。\x0d\x0a简单办法是用字符串方法读入,直接判断字符串。
简单办法是用字符串方法读入,直接判断字符串。float i;char str[32];int j,L;scanf(%s,str);sscanf(str,%f,&i);L = strlen(str);然后查找小数点,for (j=0;jL;j++) if (str[j]==.) { 有小数点,记录下j的位置 。。
因为scanf()里不能确定精度(小数点后的位数),只能确定长度。楼上说的%2f代表小数点2位并不正确,如果你输入的是22,这种方式只会取到2。 你可以换一种方式输入,输入的时候不用float型,用char str[100];scanf(%s,str);,这样输进来是个字符型数组。然后你再写个函数查找小数点后多少位。
相关问答
Q1: 如何用c语言计算小数点后位数
1、两个大于号为向右移位,同理,两个小于号为二进制向左移位。
2、如果按%f(对应float类型小数)或者%lf(double类型的小数)方式读入,则需要先去掉整数部分,然后看小数部分一直乘10减去整数部分,知道等于0,统计,乘了几次10,但是由于浮点数在计算机中存的并不是准确值,这个往往得不到正确的结果。
3、先把浮点数变成字符串,再通过小数点确定小点后面的位数。
4、说句实话,如果是我,我绝对不会使用这种方式来计算。因为float精确到小数点后6位。我建议你通过这样的方式来计算:不定义浮点数,而是定义字符串,然后从小数点开始计算后面的长度即可。最主要的是假设你输入一个123456789123456789除了使用字符串的方式你无法通过正常的浮点数数据类型来精确计算。
5、float 为单精度,有效数字为6~7 double 为双精度,有效数字为15~16 但他们在输出时,小数点后都有6位小数。
6、除非是从输入的时候就存成字符串, 然后判断小数点后的位数。一旦存成浮点型变量,不管是double还是float都是近似值,这时就无法准确判断有几位了。
Q2: C语言中怎么判断一个数是否含有小数点?!
获取字符串长度,然后加个for循环,一个一个字符地判断过去,看是不是小数点。
这个问题可以分成两部分,如何描述一个数是带小数的,和如何描述一个数的正负。一,描述正负。可以直接用判断语句,利用数学性质,与0比较。if(a0)代表该数为正数。if(b0)代表该数为负数。判断是否有小数。在C语言中把float类型强制转换为int型,会只保留整数部分的值。
简单的想了下,大概有两种方法:使用 sprintf 等把浮点数转换成字符串的函数,然后统计字符串的位数(感觉怪怪的);不断将这个浮点数乘以10,直到 (int)f 能被 10 整除,那么小数的位数就是乘以 10 的次数 - 1(或者判断整数部分和整个浮点数相等)。
a,.)!=NULL) printf(%d\n,strlen(strstr(a,.)+1)); else printf(0\n); } system(pause); return 0; } 这是最后一个已经出现错误,所以遇到要精确判断小数点的位数,最好直接按字符串读入,这和图灵机的工作原理暗暗相合。
既然是浮点数,那么这个数字中仅含有一个或多个阿拉伯数字、一个小数点,还有就是英文字母e(或e)。下面举几个例子。
关于c语言判断小数点个数和c语言如何判断小数点后位数的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。







