MATLAB Answers

Thar
0

How to comparison decimal numbers

Asked by Thar
on 1 Dec 2015
Latest activity Commented on by Walter Roberson
on 2 Dec 2015
Hi all!
I have two matrices. They have one column. First matrix is:
7.551119
7.551154
7.551189
7.551224
Second matrix is:
7.551111
7.551146
7.551181
7.551215
I want to comparison two columns but only 5 decimal places. I don't like round my numbers like:
7.55112
7.55115
and so on, if I use the function round.

  2 Comments

When you say that you want to compare to 5 decimal places, do you mean that when printed out rounded to 5 decimal places the numbers must match, or do you mean that the difference between the two numbers must be less than 10^(-5) ? Or at most 1/2 * 10^(-5) ?
I want to keep the 5 decimal points, but not rounded the numbers. for example for the number 7.551187 i want to keep only the 7.55118 and not round to 7.55119.

Sign in to comment.

Tags

3 Answers

Answer by arich82
on 2 Dec 2015
 Accepted Answer

You can truncate (without rounding) using floor (or fix, if your numbers can be negative):
x = [ ...
7.551119; ...
7.551154; ...
7.551189; ...
7.551224; ...
];
y = fix(x*1e5)/1e5;
output:
y =
7.551110000000000
7.551150000000000
7.551180000000000
7.551220000000000

  1 Comment

Thank you!!

Sign in to comment.


Answer by Image Analyst
on 2 Dec 2015

You need to use a tolerance. See the FAQ for a complete explanation: http://matlab.wikia.com/wiki/FAQ#Why_is_0.3_-_0.2_-_0.1_.28or_similar.29_not_equal_to_zero.3F

  0 Comments

Sign in to comment.


Answer by Thorsten
on 2 Dec 2015
Edited by Thorsten
on 2 Dec 2015

You can round to 5 decimal places using
xr = round(x*1e5)/1e5;
You may want to set
format long
such that the result is properly displayed.

  5 Comments

The question is whether the values are equal, but i don't like to round the values. for example if i have the values 7.551119 and 7.551111 i want to keep for each value 5 decimal points, 7.55111 and 7.55111.These values are equal and this is i want. If i round the values the first value will be 7.55112 and the second is 7.55111.I don't like this.
Then don't round (as I suspected you shouldn't). Use the tolerance like I told you in my answer where I referred you to the FAQ.
To check, Thodoris, you are okay with 7.551111 comparing equal to 7.551119, but 7.551119 should not compare equal to 7.551121 even though that is closer to it than 7.551111 is?

Sign in to comment.