1、 编程计算8/n的值(n<32767),精确到小数点后50位

来源:百度知道 编辑:UC知道 时间:2024/05/12 14:47:39

精确到小数点后50位.那你要用什么数据类型呢?明显不可能.
long double
字节数 128(16)
有效数字 18~19
数的范围
10-4931~104932

n不能为浮点,精确到了小数点后50位,末尾四舍五入

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void main()
{
char S[53],T[20],Z[20],D[52];
int n,len,i,sS,sD,Tlen,sign;
puts("连续计算8/n,n是不超过100000000正负正数,输入字母结束程序\n");
while(scanf("%d",&n)==1)
{
if(sign=n<0)n=-n;
memset(Z,0,20);sS=0;
sprintf(Z,"%d",n);
len=strlen(Z);
S[0]='0',S[1]='8';
for(i=2;i<53;i++)S[i]='0';
sD=len-1;for(i=0;i<sD;i++)D[i]='0';
while(sD<52)
{
memset(T,0,20);
strncpy(T,S+sS,len+1);
D[sD++]=atoi(T)/atoi(Z)+48;
i=atoi(T)%atoi(Z);
memset(T,0,20);
sprintf(T,"%d",i);
i=strlen(T);
memmove(T+len+1-i,T,i);
memset(T,'0',len+1-i);
strncpy(S+sS++,T,