# Thread: Binary-to-Decimal Conversion (Precision Problem)

1. Member Join Date
Aug 2010
Posts
8
Rep Power
0

## Binary-to-Decimal Conversion (Precision Problem)

This semester I'm taking a class in Number Theory and Intro to Java. As a way to study both I'm trying to make a program that can convert values from one number sytem (ie binary, hexadecimal, octal) to decimal.

One step in this has me needing to convert a double (the number to be converted) to a string. From there I use .charAt(int) to pick each digit and multiply it by the correct power of 2 .
(ie: ABCD = a*2^3 + b*2^2 + c*2^1 + d*2^0)

When I do convert the double to a string, the portion past the floating point is changed slightly. For example, the number I enter to be converted from binary to decimal as 10110.1101 is rounded by the computer in the conversion process to the value 10110.110099 (which obviously doesn't play by the rules of binary lol).

So I'm looking for a way to stop the value from being changed, during the conversion to string process. Or I'd like to find a way around having to convert to a string in the first place?

Any ideas are greatly appreciated.
I've already tried double=Math.floor(double*1000)/1000, and a few other normally clever fixes, but to no success.

Last edited by shadowfax57; 09-06-2010 at 07:18 PM. Reason: misspelling  Reply With Quote

2. ## Forget about raising numbers to a power and have a look at the Integer class; it has all the methods you want or need.

kind regards,

Jos  Reply With Quote

3. ## Is your project to write methods that are available in the Integer class
or is it to do something at a higher lever using the Integer class methods?

a way to stop the value from being changed
Don't use floating point numbers. Do it all in whole numbers.

converted from binary to decimal as 10110.1101 is rounded by the computer in the conversion process to the value 10110.110099
How did that work? Would the decimal value would be: (16+4+2).(1/2+1/4+1/16)  Reply With Quote

4. Member Join Date
Aug 2010
Posts
8
Rep Power
0

## Well to be honest I was looking to do it w/o any pre-written methods, simply because it would force me to take a longer time with it and get familiarized w/ the language. I will take a look at the Int class though, I'm sure it's definitely important enough and well worth the look.

Thanks  Reply With Quote

5. Moderator   Join Date
Apr 2009
Posts
13,541
Rep Power
28

## Is the variable that you're sticking this in a double?
That is, is this "10110.110099" in a double?  Reply With Quote

#### Posting Permissions

• You may not post new threads
• You may not post replies
• You may not post attachments
• You may not edit your posts
•