利用公式
e=1+1/1!+1/2!+1/3!+1/4!+...
计算自然对数的底e
@param n一共计算多少项
@return
public static double fac(int n){
double result=1;
if(n==1)
return 1;
else
return n*fac(n-1);
}
public static double calcE(int n){
if(n==1)
return 1;
else {
return calcE(n-1)+1.0/fac(n);
}
}
//迭代方式计算阶乘,推荐
public static long fac2(int n){
int r=1;
for(int i=0;i<n;i++){
r*=i;
}
return r;
}
public static void main(String[] args){
double res1=calcE(3);
System.out.println(res1);
}
利用公式
Pi/4=1-1/3+1/5-1/7+1/9-...
计算Pi的值
@param n一共计算多少项
@return
public static double calcPi(int n){
if(n==1)
return 1;
else{
//int flag=-1;
//flag=-flag;
double result=calcPi(n-1)+(n%2==0?-1:1)*1.0/(2*n-1);
return 4*result;
}
}
public static double calcPi1(int n){
double pi4=0;
for(int i=0;i<n;i++){
int fenmu=2*i+1;
double item=1.0/fenmu;
if(i%2==0){
pi4+=item;
}
else{
pi4-=item;
}
}
return pi4*4;
}
public static void main(String[] args){
double Pi=calcPi(3);
System.out.println(Pi);
System.out.println(calcPi1(3));
}
10进制转16进制,计算公式如下例
1958转16进制
1958%16==6 1958/16==122
122%6==10也就是A 122/16==7
7<16
1958的16进制为7A6
@param n
@return
*/
/**
反转字符串
@param s
@return
/**
10进制转16进制,计算公式如下例
1958转16进制
1958%16==6 1958/16==122
122%6==10也就是A 122/16==7
7<16
1958的16进制为7A6
@param n
@return
*/
/**
反转字符串
@param s
@return
*/
public static String reverse(String s){
int length=s.length();
String r="";
for(int i=length-1;i>=0;i--){
char ch=s.charAt(i);
r=r+ch;
}
return r;
}
public static String decToHex(int n){
String hex="";
while(n>=10){
int r=n%16;
n=n/16;
if(r<10){
hex+=r;
}
else{
char ch=(char)('A'+(r-10));
hex+=ch;
}
}
if(n!=0){
hex+=n;
}
return reverse(hex);
}
public static String decToHex1(int n){
String hex="";
while(n>0){
int r=n%16;
n=n/16;
if(r<10){
hex+=r;
}
else{
char ch=(char)('A'+(r-10));
hex+=ch;
}
}
return reverse(hex);
}
public static void main(String[] args){
String hex=decToHex(300);
System.out.println(hex);
System.out.println(decTodex(300));
}