Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

Truncating fractions

Asked by Raviteja on 7 Apr 2011
If A I have like this
>> A=[0.0001 -0.0012 1.0005 0.0040 1.4125]
A =
    0.0001   -0.0012    1.0005    0.0040    1.4125

I want to have A values like this

0.00   0.00    1.00   0.00    1.41

How to do in MATLAB ?

0 Comments

Raviteja

Products

No products are associated with this question.

3 Answers

Answer by Matt Fig on 7 Apr 2011
Accepted answer
Ar = round(A*100)/100
.

.

.

EDIT

Raviteja, the above command does store your values as you want. The problem is not with the values, but with how the values are displayed in MATLAB. You cannot make MATLAB display the values in just any way you want. The closest you can get is:

format bank
Ar = round(A*100)/100
Ab = abs(A)  %This looks like what you want, but the full value is there.

2 Comments

Raviteja on 7 Apr 2011

>> Ar=round(A*100)/100

Ar =

0 0 1.0000 0 1.4100

Matt Fig on 7 Apr 2011

It looks like it is working to me. Did you mean that you want to print out the array? That is a different question.

sprintf('%3.2f ',abs(A.'))

Matt Fig
Answer by Oleg Komarov on 7 Apr 2011

Matt's solution is working. Your question isn't specific enough. You want to display, and not to truncate.

A=[0.0001 -0.0012 1.0005 0.0040 1.4125]
sprintf('%4.2f ',A)

Oleg

2 Comments

Raviteja on 7 Apr 2011

I dont need display, I want to make values only like this
0.00 0.00 1.00 0.00 1.41

more over if I want to store
Ar=sprintf('%4.2f ',A);
It making Ar as char.

This is not what I want.
I need "double" values which exactly comes like
A=
0.00 0.00 1.00 0.00 1.41

Walter Roberson on 7 Apr 2011

Raviteja, it is impossible for binary value representation in *any* programming language to store 1.41 _exactly_.

Oleg Komarov
Answer by Walter Roberson on 7 Apr 2011

What you would like to do cannot be done in any finite binary number representation system. 1/10 is an infinitely repeating number in binary, just the same way that 1/7 is an infinitely repeating number in decimal.

You can represent A to two decimal places as character strings for display purposes, but you will not be able to truncate to two decimal places numerically in binary.

>> sprintf('%.53g', 1.41)
ans =
1.4099999999999999200639422269887290894985198974609375

0 Comments

Walter Roberson

Contact us