题目链接:http://poj.org/problem?id=1131
题目大意:
八进制小数转十进制小数。不能含有后导0
解题思路:
大数问题,JAVA果断水过。
去后导0的用地BigDecimal的stripTrailingZeros,然后使用toPlainString防止高精度数表示成科学计数法(意思就是转换成朴素的字符串)
代码如下:
import java.math.BigDecimal;
import java.util.*;
import java.math.*;
import java.io.*;
public class Main
{
public static void main(String[] args)
{
String a;
BigDecimal eight = new BigDecimal(8);
Scanner cin = new Scanner(System.in);
while(cin.hasNext())
{
a = cin.nextLine();
BigDecimal ans = new BigDecimal(0);
BigDecimal temp = new BigDecimal(1);
for(int i = 2; i < a.length(); ++i)
{
temp = temp.divide(eight);
ans = ans.add(new BigDecimal(a.charAt(i) - '0').multiply(temp));
}
System.out.println(a + " [8] = " + ans.stripTrailingZeros().toPlainString() + " [10]");
}
}
}