java高精度进制转换

POJ1131

    由于本题只有小数部分(整数部分均为0),故在进制转换的之后只能自己手写转换方法了。

    8进制转换10进制的方法为,以0.75为例,应是7*8^-1 + 5*8^-2。所以呢,可以直接定位到小数点后一位,采用此方法进行计算。

  

 import java.util.*;
import java.math.*; public class Main
{
public static void main(String []args)
{
Scanner cin = new Scanner(System.in);
BigDecimal ans, t, tmp;
while(cin.hasNext())
{
String st = cin.nextLine();
t = BigDecimal.valueOf(1);
ans = BigDecimal.valueOf(0);
int i, sta = st.indexOf('.');
for(i = sta + 1; i < st.length(); i ++)
{
tmp = BigDecimal.valueOf(st.charAt(i) - '0');
t = t.divide(new BigDecimal("8"));
tmp = tmp.multiply(t);
ans = ans.add(tmp);
}
System.out.println(st+" [8] = "+ans+" [10]");
}
}
}
上一篇:启动TOMCAT报错 java.util.zip.ZipException: invalid LOC header (bad signature)


下一篇:动态linq to list排序