C语言,实现一个除法,能计算到小数点后十万位

十万位的小数没办法表示,我想只能用一个数组表示吧
例如1/1, 结果是1.00000000后面十万个0
求大神解答

临时写的,程序不完整,可能会有漏洞
/*-------------------------------------*/之间的部分需要自己补充,不过基本思想已经体现了,仔细想想应该不难做了

#include <stdio.h>
#include <string.h>

/*超级除法函数(只提供整数相除)*/
/*ret为输出的结果,必须保证空间足够*/
/*devidend被除数,divider除数*/
void SuperDivide(char* ret, int devidend, int divider)
{
int bPointShowed = 0; /*用来表示是否出现过小数点了*/
/*使用的数组下标*/
int i = 0;
/*取余数用的*/
int remainder = devidend;
/*用这个循环计算*/
while(1)
{
/*被除数大于除数才能除*/
if(remainder >= divider)
{
/*用来表示是否除尽了*/
int bOver = 0;
/*除尽了*/
if(devidend % divider == 0)
{
bOver = 1;
}
else
{
/*取余数*/
remainder = devidend % divider;
}

int retNum = devidend / divider;
/*---------------------- 这里需要把retNum的每一位数单独填充到ret中,结合下标i++ ---------------*/
/*-------------------------------------*/

/*除尽了就跳出了*/
if(bOver)
{
/*如果bPointShowed为0则需要在ret[i]处加上小数点*/
break;
}
}
else
{
/*不够除了*/
remainder *= 10;
/*如果bPointShowed为0则需要在ret[i]处加上小数点,如果有小数点了则需要补0?*/
}

/*计算到100000位了就跳出吧*/
if(i >= 100000 - 1)
{
break;
}
}
}

int main()
{
int devidend, divider;
scanf("%d %d", devidend, divider);
char ret[100000];
/*全部清0*/
memset(ret, 0, 100000);
SuperDivide(ret, 1, 1);
printf("%s", ret);
return 0;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-02-19
没有意义,你打算用什么存储呢?1btye存储1位?那么一个数需要多大空间?

C语言,实现一个除法,能计算到小数点后十万位
\/*devidend被除数,divider除数*\/ void SuperDivide(char* ret, int devidend, int divider){ int bPointShowed = 0; \/*用来表示是否出现过小数点了*\/ \/*使用的数组下标*\/ int i = 0;\/*取余数用的*\/ int remainder = devidend;\/*用这个循环计算*\/ while(1){ \/*被除数大于除数才能除*...

超能力真的存在吗?有哪些依据?
真实二字的理解:在狗狗能感觉到的维度里,它会觉得是真实的,狗狗不能感觉到的维度而人类能感觉到,对于狗狗来说那就不是真实的... 宇宙的维度远高于人类能感知到的维度,超过我们可以感知到的维度之外的其它维度里的事情,我们就会质疑它的存在以及真实性,这其实是自身能力低下的一种表现。不要盲目的迷信其它东西,...

在深圳市平湖广场,逢节假日的时候,有一个老师经常在那推销的一本关于...
其明确分工是:右手拇指\/专点左手拇指,右手食指专点左手食指,右手中指专点左手中指,右手无名指专点左手无名指,右手小指专点左手小指。对应专业分工各不相扰。哪个手指点按数,哪个手指就伸开,手指不点按数时弯屈,表示0。它不借助于任何计算工具,不列运算程序,只需两手轻轻一合,便知答数,可进行十万位以内的任意数...

3070800000移小数点单位是十万,等于多少?
3070800000意思是缩小十万倍,等于多少。可以用除法计算。3070800000÷100000 =30708十万 =30亿7080万 计算时,要以十万为单位,就是缩小十万倍,最后的计数单位是十万。也就是将3070800000的小数点向左移动5位,点上小数点就可以了。因这个数是整数,小数点在8的右下角,就不写了。

三位小数除以两位小数怎么除
算出的数再除十万得出最后答案。用列竖式计算,将被除数的小数点移动到整数,除数同样移动相同个数改为整数,三位小数乘一千,两位小数乘一百。移动几位就是1加两个数相乘多少个0。除法是四则运算之一,已知两个因数的积与其中一个因数,求另一个因数的运算,叫做除法。

怎样用单片机实验板上的矩阵键盘和显示器编写一个简单的计算器,要求...
num[1]=First\/1000000%10; \/\/百万位 num[2]=First\/100000%10; \/\/十万位 num[3]=First\/10000%10; \/\/万位 num[4]=First\/1000%10; \/\/千位 num[5]=First\/100%10; \/\/百位 num[6]=First\/10%10; \/\/十位 num[7]=First%10; \/\/个位 ...

数字常识和亿相关
⑷ 除法 意义:已知两个因数的积与其中的一个因数,求另一个因数的运算叫做除法。 法则:除数是两位数的除法,①从被除数的高位起,先用除数试除被除数的前两位数,如果它比除数小再试除前三位数;②除到被除数的哪一位,就在那一位上面写商;③每次除后余下的数必须比除数小。 5、运算定律和性质 ⑴ 定律 ①...

c语言编写的求阶乘的程序为什么一运行就出现程序错误,需要关闭
我编写了一个“天文数字计算”程序突破了这一限制,可以把数字的长度扩充到无穷多位。除了能做加、减、乘、除、求模等基本运算外还可以做阶乘、乘方、开平方等运算。例如:10000! = ?、(2002^2000)%9999 = 9394、2002的平方根的小数点后第10000位是4。下面这个程序只是我用编写的“天文数字计算”...

小学数学知识点归纳?
1、减法的性质:从一个数里连续减去几个数,可以从这个数里减去所有减数的和,差不变,即a-b-c=a-(b+c) 2、除法的性质:从一个数里连续除去几个数,可以从这个数里除去所有除数的积,商不变,即a÷b÷c=a÷(b×c) 3、被减数-减数=差,被除数÷除数=商。5式与方程1、含有未知数的等式就是方程,如x+5...

小学四年级下册数学期末测试卷人教版答案?
四、请你填一填。(13’) 1、用字母表示乘法分配律是( (a+b)×c=a×c+b×c )。 2、0.28里有( 28 )个0.01,1元2角4分写成小数是( 1.24 )元。 3、160度角比平角少( 20 )度。 4、把0.36扩大到100倍再把小数点向左移动一位后是( 3.6 )。 5、 9.0968保留一位小数是(9.1 ),保留两位小数是(...

相似回答