homechevron_rightProfessionalchevron_rightComputers

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.

 TimurArticle : Conversion of fractional numbers between numeral systems - Author, Translator ru - enCalculator : Conversion of fractional numbers between numeral systems - Author AntonCalculator : Conversion of fractional numbers between numeral systems - Translator ru - en

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, which can also convert fractional numbers between different numeral systems.

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

Conversion of fractional numbers between numeral systems

Input numeral system base

Target numeral system base

Digits after the decimal point: 8
Target number

Conversion details

Source number (decimal)

Target number (decimal)

Conversion error (decimal)

Maximum conversion error possible (decimal)

Save the calculation to reuse next time, to extension embed in your website or share share with friends.

So, I used to think that conversion of fractional numbers is difficult question, but it turns to be quite easy to understand. All we need to remember is that we deal with positional numeral system.

Let me show it on 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. Shouldn't that easy?

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

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

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

Everything is nice... for decimal numeral system. But for binary numeral system we have a 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). I ain't even sure we can find the exact number of binary digits to write 0.8 precisely.

That's why conversion of fractional numbers often gives us conversion error. The error depends on number of digits after 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, it is decimal 0.796875, the difference is 0.003125. And this is our error during conversion decimal 0.8 to binary with 6 digits after the point.

The value of 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 comparing to maximum possible error.

That's all.
{"found_math": true, "script_math_tex": 0, "script_math_asciimath": 0, "math_annotations": 0, "math_alttext": 0, "mathml": 0, "mathjax_tag": 0, "mathjax_inline_tex": 0, "mathjax_display_tex": 0, "mathjax_asciimath": 0, "img_math": 0, "codecogs_latex": 0, "wp_latex": 0, "mimetex.cgi": 5, "/images/math/codecogs": 0, "mathtex.cgi": 0, "katex": 0, "math-container": 0, "wp-katex-eq": 0, "align": 0, "equation": 0, "x-ck12": 0, "texerror": 0, "url": "https://planetcalc.com/862/?thanks=1", "fetch_time": 1532000336000000000, "content_mime_type": "text/html", "warc_filename": "crawl-data/CC-MAIN-2018-30/segments/1531676590866.65/warc/CC-MAIN-20180719105750-20180719125750-00130.warc.gz", "warc_record_offset": 725902182, "warc_record_length": 15409, "token_count": 955, "char_count": 3729, "score": 4.03125, "int_score": 4, "crawl": "CC-MAIN-2018-30", "snapshot_type": "longest", "language": "en", "language_score": 0.8244223594665527, "file_path": "/sailhome/yjruan/project/latent-lm/data/processed/finemath-4plus/finemath-4plus/train-00048-of-00064.parquet"}