Inserting a 1000 separator

126 views (last 30 days)
joseph Frank on 8 Feb 2013
Hi, I am building a table in which I need to insert numbers with a comman 1000 separator and two decimal points. For example: A=11201453.21 % should be A=1,1201,453.21 Any hint about how to do it? Best,

Miroslav Balda on 8 Feb 2013
Does the initial command have a fixed structure? How you say where to put dots? The resulting expression is not MATLAB command. If it has to be, The right side shot be enclosured in braces.
joseph Frank on 8 Feb 2013
yes the resulting expression is not a matlab command. I want to generate A={'1,1201,453.21'} in matlab
Image Analyst on 8 Feb 2013
My code gives close to that:
A=11201453.21
stringVersionOfA = CommaFormat(A)
cellVersionOfString = {stringVersionOfA}
In the command window:
A =
11201453.21
stringVersionOfA =
11,201,453.21
cellVersionOfString =
'11,201,453.21'
Can you explain why your second group has 4 numbers (1201) instead of 3? And is that the reason why the code I posted earlier does not meet your requirements?

Image Analyst on 8 Feb 2013
Here's a function I've used:
%=====================================================================
% Takes a number and inserts commas for the thousands separators.
function [commaFormattedString] = CommaFormat(value)
% Split into integer part and fractional part.
[integerPart, decimalPart]=strtok(num2str(value),'.');
% Reverse the integer-part string.
integerPart=integerPart(end:-1:1);
% Insert commas every third entry.
integerPart=[sscanf(integerPart,'%c',[3,inf])' ...
repmat(',',ceil(length(integerPart)/3),1)]';
integerPart=integerPart(:)';
% Strip off any trailing commas.
integerPart=deblank(integerPart(1:(end-1)));
% Piece the integer part and fractional part back together again.
commaFormattedString = [integerPart(end:-1:1) decimalPart];
return; % CommaFormat