http://poj.org/problem?id=1131
8进制小树,转 10进制,
跟2进制 转10进制 一样; 每位的数值 * 每位权值 ,在求和;
stripTraillingZeros():把不影响数值大小的0全去掉;
1.50 ->1.5;
1.00->1;
大家都知道JAVA的类一般都要带toString这个方法的,BigDecimal则有toString,toPlainString和toEngineeringString三种表示成字符串的方法,
下面是这三种方法各自的特点:
toString: using scientific notation if an exponent is needed;
toEngineeringString:using engineering notation if an exponent is needed.
toPlainString:without an exponent field.
package com.zyh.hdu; import java.math.BigDecimal; import java.util.Scanner; public class Poj1131 { public static void main(String[] args) { Scanner cin = new Scanner(System.in); BigDecimal ans ,eight,tmp,res; while(cin.hasNext()){ String s = cin.next(); // BigDecimal类型的数要赋值 用 valueof(); eight = BigDecimal.valueOf(8.0); ans = BigDecimal.ZERO; tmp = BigDecimal.ONE; for(int i = 2; i < s.length();i++){ int c = s.charAt(i) - '0'; //提取每一位 tmp = tmp.divide(eight); // 每次 除以 8.0; res = BigDecimal.valueOf(c); //提取每一位转为大数 ans = ans.add(res.multiply(tmp)); //每次相加就行了 } System.out.println(s +" [8] = "+ ans.toEngineeringString() +" [10]"); } } }