现在的位置: 首页 > 综合 > 正文

POJ1131 (Java大数 进制转化8-10 )

2017年06月02日 ⁄ 综合 ⁄ 共 950字 ⁄ 字号 评论关闭

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]");
		}
	}
}

抱歉!评论已关闭.