## How to improve the precision of this base converter function on Matlab?

## How to improve the precision of this base converter function on Matlab?

(OP)

Hello.

I'm trying to create a function on Matlab that converts a base 10 (decimal) real number into another base.

I wrote this function:

It works.

But the problem is that it doesn't give me enough precision.

For example:

(the 1s should be repeating indefinitely)

It has a precision of about 10^(-16) only. I would need much more precision.

Maybe there is a way to modify my function so that it would have an arbitrary precision?

Thanks in advance for your answers.

I'm trying to create a function on Matlab that converts a base 10 (decimal) real number into another base.

I wrote this function:

#### CODE --> Matlab

function [converted_number] = base_converter(base,number,digits) format longG separator=' '; radix_character='.'; digits=digits-1; integer_part=floor(number); fractional_part=number-integer_part; converted_number=''; if integer_part==0 converted_number=['0']; end while integer_part~=0 converted_number=[converted_number,separator,num2str(mod(integer_part,base))]; integer_part=(integer_part-mod(integer_part,base))./base; end converted_number=[converted_number,separator,radix_character]; while fractional_part~=0 && digits~=0 fractional_part=fractional_part.*base; converted_number=[converted_number,separator,num2str(floor(fractional_part))]; fractional_part=fractional_part-floor(fractional_part); digits=digits-1; end end

It works.

But the problem is that it doesn't give me enough precision.

For example:

#### CODE --> Matlab

base_converter(12,1./11,50) ans = 0 . 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 11 10 1 11 5 1 11 0 3 11 3

(the 1s should be repeating indefinitely)

It has a precision of about 10^(-16) only. I would need much more precision.

Maybe there is a way to modify my function so that it would have an arbitrary precision?

Thanks in advance for your answers.

## RE: How to improve the precision of this base converter function on Matlab?

TTFN

I can do absolutely anything. I'm an expert!

FAQ731-376: Eng-Tips.com Forum Policies forum1529: Translation Assistance for Engineers

## RE: How to improve the precision of this base converter function on Matlab?

You are passing a double precision number as an argument. 1./11 will be truncated before the function even gets started. I assume you are writing this for entertainment, not out of necessity.

"help eps" for an explanation of about "10^(-16) only"

Note that apparently simple fractions like 1/10 disappoint many Matlab users. 0.3-0.2-0.1 doesn't give the 0.0 expected by many newcomers (often referred to as a "bug"). Floating point is based on binary fractions, not decimal fractions.

Surprisingly (for some), Matlab copes with expressions like 0:0.1:1.0 quite happiy. It doesn't create the row vector by repeatedly adding 0.1, (which wouldn't work), it's more clever than that.

If you really need arbitrary precision, your algorithm is not a good one. Never good to depend on knife-edges or work near cliffs.

Steve