❶ 求一個高精度的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='