OmegaForce
Industrial
- Mar 9, 2015
- 3
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:
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:
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.