61 views (last 30 days)

Show older comments

Hello,

I have a CSV file that contains random values, all of them being decimals. Some of them have one decimal value while others have 6 or 7 decimals. When I convert them to txt, values are stored as follows.

How can I convert the csv without changing the actual value and keeping the precise decimal points (comma delimited)?

Thanks in Advance!

Walter Roberson
on 12 Mar 2020

Walter Roberson
on 12 Mar 2020

You do what I already told you to do, and even provided code details for: manipulate the file as text instead of as numeric.

I guarantee you that if you treat the file as numeric that you cannot meet your goal of preserving the original number of decimal places -- not unless each different column has its own fixed number of decimal places. Which I can see from your sample is not the case.

https://www.mathworks.com/matlabcentral/answers/510021-read-and-write-csv-files-without-changing-properties#answer_419381

Piyush Lakhani
on 12 Mar 2020

Hi James,

Following way might be work for you.

x=csvread('filename.csv','Row_offset','column_offset'); %if your file has text then give offset for column or row

content=sprintf('%f, %f, %f, %f, %f, %f, %f \n',x); % put %f number of times same as number of columns,

% Insted of %f you can set the decimals you wants like eg. %5.6f

fId='file.txt'

fId = fopen(fId, 'w') ;

fwrite( fId, content ) ;

fclose( fId ) ;

Walter Roberson
on 12 Mar 2020

content=sprintf('%.0f, %.0f, %.1f, %.1f, %.1f, %.6f, %.6f \n',x.');

to deal with multiple rows

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

Start Hunting!