how to change decimal places after point

1 view (last 30 days)
I have so many text files named
data_70.000_32.125
data_70.124_32.120
data_74.120_32.123
I have to make them
data_70.0_32.125
data_70.124_32.12
data_74.12_32.123
means where three zero after decimal make it one zero and remaining no zero.
  1 Comment
Stephen23
Stephen23 on 22 Mar 2016
Edited: Stephen23 on 22 Mar 2016
Actually the names with consistent three decimal digits are better, because they:
  • are easier to scan when printed in a list.
  • are easier to parse (consistent formats are always better).
  • sort correctly into numeric order using a standard sort. Here is an example showing that your new format does not sort correctly:
>> old = {'data_70.000_32.125.csv'; 'data_70.124_32.120.csv'; 'data_70.120_32.123.csv'};
>> sort(old) % correct numeric order
ans =
'data_70.000_32.125.csv'
'data_70.120_32.123.csv'
'data_70.124_32.120.csv'
>> new = {'data_70.0_32.125.csv'; 'data_70.124_32.120.csv'; 'data_70.12_32.123.csv'};
>> sort(new) % your format gives the wrong numeric order.
ans =
'data_70.0_32.125.csv'
'data_70.124_32.120.csv'
'data_70.12_32.123.csv'
Of course you can then use my FEX submission natsortfiles to get them back into the correct order, but why bother when those trailing zeros do the job anyway.
I don't see any good reason to remove those zeros, just disadvantages.

Sign in to comment.

Accepted Answer

Azzi Abdelmalek
Azzi Abdelmalek on 22 Mar 2016
v={'data_70.000_32.125';'data_70.124_32.120';'data_74.120_32.123'}
w=cell(size(v))
for k=1:numel(v)
a=regexp(v{k},'_','split')
a2=a{2}
a3=a{3}
b2=str2double(regexp(a2,'\d+','match'));
b3=str2double(regexp(a3,'\d+','match'));
w{k}=sprintf('data_%d.%d_%d.%d',[b2 b3]);
end
celldisp(w)
  2 Comments
Tanmoyee Bhattacharya
Tanmoyee Bhattacharya on 22 Mar 2016
If I have so many text files How can we get the names as v in this code.How can we read all that text files to get the name.some 2000 text files are there.
Azzi Abdelmalek
Azzi Abdelmalek on 22 Mar 2016
Edited: Azzi Abdelmalek on 22 Mar 2016
You can use the dir command to get all your text files located somewhere
s=dir(fullfile('your_folder','*.txt'))
files={s.name}

Sign in to comment.

More Answers (0)

Categories

Find more on File Operations in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!