# How to get the same number of char as number of decimals using num2str?

11 views (last 30 days)
Louis Tomczyk on 16 Sep 2022
Commented: Louis Tomczyk on 17 Sep 2022
Dear all,
I want to get the decimal part of a number.
I have written this small function:
function dec = get_decimals(input)
str = num2str(input) % convert to string
index = strfind(str,'.'); % locate the comma/point
dec = str2double(str(index+1:end)); % take the end
end
However if my input has too many decimals, the function will truncate my number:
>> dec = get_decimals(3.141592653)
str =
'3.1416'
decimals =
1416
How to solve it?
Thanks in advance.
Best,
louis
##### 0 CommentsShowHide -1 older comments

Sign in to comment.

### Accepted Answer

Bruno Luong on 16 Sep 2022
input = pi
input = 3.1416
str = num2str(input,16)
str = '3.141592653589793'
##### 1 CommentShowHide None
Louis Tomczyk on 16 Sep 2022
Ok thanks a lot, below a function I suggest:
function dec = get_decimals(varargin)
% ---------------------------------------------
% ----- INFORMATIONS -----
% Function name : GET_DECIMALS
% Author : louis tomczyk
% Institution : Telecom Paris
% Email : louis.tomczyk.work@gmail.com
% Date : 2022-09-16
% Version : 1.0
%
% ----- MAIN IDEA -----
% Return the decimal part of a given input.
%
% ----- INPUTS -----
% VARARGIN{1} the number from which we want the decimals
% VARARGIN{2} the number of decimals wanted [OPTIONAL]
%
% ----- BIBLIOGRAPHY -----
% Functions :
% Author :
% Author contact :
% Date :
% Title of program :
% Code version :
% Type :
% Web Address :
% -----------------------
% Articles
% Author :
% Title :
% Jounal :
% Volume - N° :
% Date :
% DOI :
% ---------------------------------------------
input = varargin{1};
% conversion to string
if nargin == 1
str = num2str(input);
else
str = num2str(input,varargin{2});
end
% locating the decimals
index = strfind(str,'.');
% getting the decimals
dec = str2double(str(index+1:end));
% if no decimals
if isnan(dec)
dec = [];
end
end
Best,

Sign in to comment.

### More Answers (1)

James Tursa on 16 Sep 2022
You might look into using the fix( ) function to isolate the fractional part of your number and then work with that directly.
##### 7 CommentsShowHide 6 older comments
Louis Tomczyk on 17 Sep 2022
I know it, but usually I like to try things my own way, not getting directly answer which will surely be much more efficient.
I like to see the reasoning process suggested by others to get the best of this sharing experience.
Thanks again anyway to both of you.
Best,
louis

Sign in to comment.

### Categories

Find more on Data Type Identification in Help Center and File Exchange

R2021a

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by