Conversion of fractional numbers between numeral systems

This online calculator helps to convert fractional number in one numeral system to fractional number in other numeral system.

After I've made several calculators for numeral systems conversion (from the simplest one to more advanced: Conversion of decimal number to other notations, Conversion from decimal numeral system, Conversion between any bases - users often asked me, what should we do about fractional numbers, how to convert them? So, I decided to make another calculator, converting fractional numbers between different numeral systems.

As usual, I've placed some theory below the calculator

PLANETCALC, Conversion of fractional numbers between numeral systems

Conversion of fractional numbers between numeral systems

Input numeral system base
Target numeral system base
Digits after the decimal point: 8
Target number
 
Source number (decimal)
 
Target number (decimal)
 
Conversion error (decimal)
 
Maximum conversion error possible (decimal)
 

So, I used to think that converting fractional numbers is difficult, but it turns out to be relatively easy to understand. All we need to remember is that we deal with the positional numeral system.

Let me show an example. Take a look at decimal number 6.125. You can write it like this:

6.125=6*10^0 + 1*10^{-1}+2*10^{-2}+5*10^{-3}=6*1+\frac{1}{10}+\frac{2}{100}+\frac{5}{1000}

Easy to follow, isn't it? But it is the same thing for any other positional numeral system. Let's take, for example, infamous binary system, and fractional binary number 110.001. You can write it like this:

110.001=1*2^2 + 1*2^1+0*2^0+0*2^{-1}+0*2^{-2}+1*2^{-3}=1*4+1*2+0*1+\frac{0}{2}+\frac{0}{4}+\frac{1}{8}=6+\frac{1}{8}=6.125

Yes, I've made it up. Binary 110.001 is decimal 6.125. Wasn't that easy?

But, there is one caveat. Since we have fractions and denominators that are different, we can't always keep the same precision with varying numerals systems.

Again, let me show it with an example. Take a look at decimal number 0.8

0.8=0+\frac{8}{10}.

Everything is easy for the decimal numeral system. But for the binary numeral system, we have problems. Look at this

0+\frac{1}{2}+\frac{1}{4}+\frac{0}{8}+\frac{0}{16}+\frac{1}{32}+\frac{1}{64}+...=0 + 0.5 + 0.25+0.03125+0.015625+...=0.796875+...

We can go on, but even now, we can see that decimal 0.8 is binary 0.11001100...(and many digits). In fact, it is a periodic number with period 1100, so we won't find the exact number of binary digits to write 0.8 precisely. It is 1100 all the way down.

That's why the conversion of fractional numbers often gives us conversion error. The error depends on the number of digits after the point which we decide to use. For example, let's convert decimal 0.8 to binary and use 6 digits after the point. We will get 0.110011. But it is not decimal 0.8; in fact, but it is decimal 0.796875; the difference is that it is 0.003125. And this is our error during conversion decimal 0.8 to binary with 6 digits after the point.

The value of the rightmost digit is called resolution or precision and defines the smallest possible nonzero number, which can be written using this number of digits. For our example it is 2^{-6}=0.015625. And maximum possible conversion error, in that case, is one-half of it, or 0.0078125. Note that our conversion error for 0.8 is not that bad compared to the maximum possible error.

That's all.

URL copied to clipboard
PLANETCALC, Conversion of fractional numbers between numeral systems

Comments