❶ 求一个高精度的GPS算法!
首先你要明白,你用GPS算出的点的数值和这个点的实际值是有误差的,这个误差的参数是多少,你必须知道,然后去做点校正。做好之后就是这个点的高精度数值,误差一般在厘米级。你的算法对不对我不好说,因为不清楚你的过程,但是知道这两个点的准确数值之后,肯定对你有帮助。
❷ 高精度算法的C
模仿人类的竖式乘法 #include<stdio.h>#include<string.h>#defineMAXLEN200;//设置数的最大长度intmain(){inta[MAXLEN+10],b[MAXLEN+10],len1,len2,c[2*MAXLEN+10],i,j;charstr1[MAXLEN+10],str2[MAXLEN+10];for(i=0;i<MAXLEN+10;i++)a[i]=b[i]=0;//将a,b两个数组都置为零for(i=0;i<2*MAXLEN+10;i++)c[i]=0;//将c置为零//scanf(%s%s,str1,str2);gets(str1);gets(str2);//以字符的形式读入两个乘数len1=strlen(str1);len2=strlen(str2);for(i=len1-1,j=0;i>=0;i--)//将字符型数转换成数字,低位存在数组的低位(倒置)a[j++]=str1[i]-'0';字符型减去'0'的ASCIII码值转换为数字for(i=len2-1,j=0;i>=0;i--)b[j++]=str2[i]-'0';//同上for(i=0;i<len2;i++)//循环相乘,用第二个数的每一位去乘以第一个数,a的第i位乘以b的第j位之后存在c的第i+j位上for(j=0;j<len1;j++)c[i+j]+=b[i]*a[j];for(i=0;i<len1+len2+2;i++)//处理进位问题,如果大于10,则进位if(c[i]>=10){c[i+1]+=c[i]/10;c[i]%=10;}for(i=len1+len2+2;(c[i]==0)&&(i>=0);i--);//过滤掉高位的数字零,使之不输出if(i>=0)for(;i>=0;i--)printf(%d,c[i]);elseprintf(0);printf( );return0;}
❸ c语言高精度计算
不是我写的,,帮你找到的。。
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include"stdlib.h"
voidmain()
{
intn=0,i=0,j=0,k=0,b=0;
chara[3][500]={0};
intn1=0,n2=0;
chars[500]={0};
intn3=0;
intc=0,c1=0;
inttemp=0;
charop;
charstr[1001]={0};
char*result;
scanf("%d",&n);
result=(char*)malloc(501*n);//根据输入的n申请内存空间
*result='