要求 算出浮点部分的位数!!!!!不能用数组指针。 求高手
想了好多方法,都以为精度缺失问题失败来。比如
while ((float)cpNum2>(float)(int)cpNum2)
{
cpNum2 *= 10;
bFlt++;
}
求高手给个精准算法,在线等!!!!
我问的就是如何避免这种精度缺失!!!
追答精度的缺失是必然的,计算机存储采用2进制方式存储的,任何10进制数据都会先转化为二进制方式了,然后在按照float的存储方式写到存储空间的,所以要根据你自己的需要来设计这个精度了,不然你去盖茨,也无法解决这个问题
看来还是没明白你的意思,呵呵
追问原题是随机输入double类型的数转换成字符串! 貌似就不能用字符串输入浮点数了吧
追答我不太明白你的意思,这个随机输入不是键盘随机输入一个double类型的浮点数?
然后我写的确实也是将浮点数转换成字符串来处理的。求的是浮点数小数部分的位数。不知道你到底是什么意思呢?
只能这样,计算机储存浮点型数据时只储存小数点后6位,想算具体的只能用数组
追问同学,这个方法我试过,你试试456.1234. 陷入死循环了
追答确实有精度损失,虽然没有死循环但算的是结果是5,明显是错的,可以试试把浮点型转换成64位的longlong型(VC中为__int64)
输入的浮点型末尾不可能是零,所以结果中肯定比原来多一个0,其后的是乱的,你看看能不能根据这个进行编程
原题是随机输入double类型的数转换成字符串!我得分离浮点位的每一位数 对吧。 如果说大侠你说不适合,有没有好的办法求出浮点位数。 我就是在求教。
追答假定有效位是MAX。将0.22000089转化为字符串输出。下面只是参考。
int i=MAX;
char s[MAX];
float d;
input d;
while( i > 0){
s[MAX-i] = d + '0';
d = d - s[MAX-i];
d = d * 10;
i --;
}
print s;
如何获取一个整数或者一个小数的小数位数?
在C语言中,可以使用类型转换、取模来取得整数和小数部分。以下代码示例:类型转换:可以使用类型转换函数将浮点数转换成整数,将整数转换成浮点数,以取得整数和小数部分。例如,以下代码将整数a的小数部分取出:请点击输入图片描述 取模:可以使用取模运算符( %)来取得整数和小数部分。例如,以下代码将...
C语言小数位位数?
从第一个不为0的数字开始计数,直至遇到小数点字符 当集数超过5,对应"EX"include <stdio.h> int main(){ char s[100];int i,cnt;gets(s);for(i;s[i];i++);for(i--;s[i]=='0';--i);for(cnt=0;s[i]!='.';--i,cnt++);if(cnt<5)printf("%d\\n",cnt);else printf("E...
如何用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语言求一个数的小数点后第几位数是多少,程序尽量时间复杂度小点_百 ...
printf("小数点后第%d位为:%d\\n",i,m%10);}
c语言中的整型数字怎么求小数点后的位数
两个大于号为向右移位,同理,两个小于号为二进制向左移位。(即乘以多少或除以多少)例如:int main(){ int a = 16;cout<<(a<<4)<<endl;cout<<(a>>4)<<endl;\/\/但是a的值并没有改变 a >>= 1;\/\/此时a的值改变了 cout<<a<<endl;cin>>a;return 0;} 输入的结果分别为256,1;...
c语言 求小数的位数
float 在存储的时候,占32位,最高位是符号位,第30-23位为指数位,剩余是尾数位占24。举个例子:假设:float a=3.21;print("%f",a);和printf("%10f",a);输出结果肯定不相同的,因此,你想要得到精准的位数,除非要制定长度了,否则,你只能按剩余24位来计算了,注意,要去掉10进制的位数了...
c语言怎么输出小数?
在C语言中,如果你想要输出小数并且不进行四舍五入,你可以使用 printf 函数的 %.nf 格式说明符,其中 n 是你想要的小数位数。例如,如果你想输出一个浮点数并且保留 2 位小数,你可以这样做:在这个例子中,%.2f 告诉 printf 函数你想要输出一个浮点数并且保留 2 位小数。这不会进行四舍五入,...
用C语言怎样判断一个纯小数有几位,并在数组中输出
include "stdio.h"int len_decimal(float f) \/\/定义函数取小数位数(),可判断任意真小数 { int count;if( n>0 && n<1) \/\/n是纯小数 while(f){ f-=int(f); \/\/取小数部分 f*=10 ; \/\/右移小数点1位 count++; \/\/记次 } return(count);}int main(){ fl...
c语言 小数位数
double AverageRandom(double min,double max){ int minInteger = (int)(min*10000);int maxInteger = (int)(max*10000);int randInteger = rand()*rand();int diffInteger = maxInteger - minInteger;int resultInteger = randInteger % diffInteger + minInteger;return resultInteger\/10000.0;...
C语言新手求教。求输入一个浮点数,输出这个这数有几位整数几位小数
假设一个整数最多100位吧,for(i = 0;i < 100;i++){ if(m\/10^i <1) break;} 则整数部分位数为i;对于小数部分n,假设一个小数最多100位吧,for(i = 0;i < 100;i++){ if(n*(10^i) >1) break;} 则小数部分位数为i;嗯,应该就这样,打字不容易,跪求采纳 ...