java高精度进制转换

POJ1131

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

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

  

 1 import java.util.*;
 2 import java.math.*;
 3
 4 public class Main
 5 {
 6     public static void main(String []args)
 7     {
 8         Scanner cin = new Scanner(System.in);
 9         BigDecimal ans, t, tmp;
10         while(cin.hasNext())
11         {
12             String st = cin.nextLine();
13             t = BigDecimal.valueOf(1);
14             ans = BigDecimal.valueOf(0);
15             int i, sta = st.indexOf(‘.‘);
16             for(i = sta + 1; i < st.length(); i ++)
17             {
18                 tmp = BigDecimal.valueOf(st.charAt(i) - ‘0‘);
19                 t = t.divide(new BigDecimal("8"));
20                 tmp = tmp.multiply(t);
21                 ans = ans.add(tmp);
22             }
23             System.out.println(st+" [8] = "+ans+" [10]");
24         }
25     }
26 }
时间: 2024-08-14 05:39:04

java高精度进制转换的相关文章

java 16进制转换10进制

public static String toHexString2(byte[] b) { StringBuffer buffer = new StringBuffer(); for (int i = 0; i < b.length; ++i) { buffer.append(toHexString2(b[i])); } return buffer.toString(); } public static String toHexString2(byte b) { char[] buffer =

Java的进制转换操作(十进制、十六进制、二进制)

2014-05-06 17:34 吴文付 最近由于工作上的需要,遇到进制转换的问题.涉及到的进制主要是 十进制,十六进制,二进制中间的转换. 这里整理一下.具体的计划为:封装一个转换类,一个测试类. 1.十进制 转 十六进制: 2.十进制 转 二进制 3.十六进制 转 十进制: 4.十六进制 转 二进制: 5.二进制转 十进制: 6.二进制转十六进制: Java的进制转换操作(十进制.十六进制.二进制),布布扣,bubuko.com

poj1220:高精度进制转换模板题

今天撸3708  一直奇怪的re 就先放下了,写这个题的过程中学习了一个高精度进制转换,用这个模板写了1220 记录一下: #include <iostream> #include <stdio.h> #include<string.h> #include<algorithm> #include<string> #include<ctype.h> using namespace std; #define MAXN 10000 char

高精度进制转换

高精度进制转换: 对于普通的不是很大的数的相互转换,我们一般采用不断模取余的方法,例如:将10进制数m转换成n进制数,则对m模n取余即可.但是,如果是一个有几百.几千或者更多位的大数呢?显然这种模取余的方法不再适用了.那如何求解此类大数的转换呢?接下来,介绍一种通用方法. 我们将一个大数的每一位看做是一个单独的数,但是却不是完全孤立的,与其它位置上的数有关联,从该数的最高位开始,对该位上的数除以要转换的进制基数,得到商和余数,商取代原来该位上的数,进行下一位的相同操作,但是注意下一位的除数不仅仅

Java基础-进制转换

Java基础-进制转换 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Java 程序中常用的进制 1>.十进制,由"0123456789" 这10个数字组成,逢十进一: 2>.二进制,由"01" 这2个数字组成,逢二进一,以"0b"开头: 3>.八进制,由"01234567" 这8个数字组成,逢八进一,以数字"0"开头: 4>.十六进制,由"0123

《java版进制转换》

import java.util.Scanner; class 十进制转成十六进制_2 { public static void main(String[] args) { int num = 0; Scanner scan = new Scanner(System.in); System.out.println("请输入一个十进制的整数:"); num = scan.nextInt(); String str_bin = toBinary(num); String str_oct =

JAVA 学习 进制转换

写一个函数trans();    1 能够进行十进制转二进制    2 能够进行十进制转八进制    3 能够进行十进制转十六进制    4 封装函数 代码实现: class ArraryTest { public static void main(String[] args) { int num=60; String str_Bin=toBinary(num); String str_Oct=toOctal(num); String str_Hex=toHex(num); System.out

Java:进制转换

进制转换是常常需要的一种数据处理,在java中的一些类中封装了具有转换功能的方法,这个不做介绍.其实,进制之间的转化是通过先位异或&,再位移动>>>的方式实现的. 例如,对于一个十进制的整数而言,Int整型占4个字节,每一个字节为8个bit位,所以整型数据有32位bit.将整型转换为二进制,需要先将基数num=num&1,然后将32位bit右移>>>1位,直到num!=0条件不满足即可 将整型转换为八进制,需要先将基数num=num&7,然后将3

java之进制转换

[转载]晨风?0?5?0?2?0?1?6?6 2014年03月08日 于 爱Java 发表 众所周知.程序世界计算机中采用的是二进制,一个数字可以用任意进制表示.所以看一个数据值的同时.还要观察它的进制.以免造成笑话. 此时.进制之间的转换我也必然需要熟知.做到心中有数.下面就进制转换为大家提供几点参考. 分析: Java中在声明数字时默认采用的是十进制,可以在数字前加上符号表示数字采用八进制[前面加0(零)]或者十六进制[前面加上0x(零x)]. Java的整型封装类Integer和Long提