在C++中如何实现将小数转化为分数?
我的想法是将小数的每一个数字转化为字符,再计算字符串的长度,但不知道如何做
在C++中如何实现将小数转化为分数?
我的想法是将小数的每一个数字转化为字符,再计算字符串的长度,但不知道如何做
C++中double类型的“长度”(位数)是很长的,就算像1.0/2=0.5也会存成0.50000...具体是多长跟编译器有关。一般来说,先确定了小数位数才能转成分数。比如说约定出现连续的若干个0的时候就舍弃这些0以及之后的部分(有限小数),或者找到循环节再用数学方法(求极限)推出这个分数,至于那些没有上面两种特征的小数显然是无理数或者存的位数不够,无法化成分数
把一个数的小数部分转成字符很容易
s=(int)x;
x=x-s;
i=0;
while(i<n) //要保存n位
{
x=x*10;
a[i]=((int)x)%10;
i++;
}
这样程序结束后a[i]就保存了x的n位小数,当然n不能定的太大,超过int32(有对x取整的操作)