source:
题意:给一个八进制的0-1之间的小数,现在要求它对应的十进制的小数。
思路:明显要用高精度实现进制转换,这里直接上java,常规思路搞定。
package poj1131;
import java.io.BufferedInputStream;
import java.math.BigDecimal;
import java.util.Scanner;
public class Main
{
public static void main(String[] args) throws Exception
{
String s;
Scanner cin = new Scanner(new BufferedInputStream(System.in));
BigDecimal eight = new BigDecimal(8);
while(cin.hasNext())
{
s = cin.nextLine();
BigDecimal ans = new BigDecimal(0);
BigDecimal t = new BigDecimal(1);
for(int i=2;i<s.length();i++)
{
t=t.divide(eight);
ans = ans.add(new BigDecimal(s.charAt(i)-'0').multiply(t));
}
System.out.println(s+" [8] = "+ans.stripTrailingZeros()+" [10]");
}
cin.close();
}
}
注:
1、BufferedInputStream(System.in) 是带缓存的读入操作,在读入数据较大时有一定优势
2、stripTrailingZeros()是去除trailing的0(结尾的0)的方法