why float no. become integer?
Show older comments
hi,
i have two vectors
the first one is float as:
c=[2.5 4 6.5 4.5 3]; c1=[1 2 10 9];
when merge them as:
c2=[c c1]
why c within c2 become [2 4 6 4 3]?
thanks in advance
Accepted Answer
More Answers (2)
Image Analyst
on 27 Apr 2012
2 votes
Because that's how MATLAB does it. If an integer is multiplied by a double, it gives a rounded integer result. Same thing if you combine them like you did. It does not promote the integer variable to the more general double like most languages, and like you would think - I don't know why, that's just the way it is. This was one of the most surprising things I learned when I was learning MATLAB. I can't find the explanation for this in the help - maybe someone else will say where it can be found.
1 Comment
Walter Roberson
on 27 Apr 2012
When there is a mix of integer and floating point types, the result will be the left-most integer type evaluated in the expression:
>> ([int8([4 5 6]), uint16([1118 1119 11110])])
Warning: Concatenation with dominant (left-most) integer class may overflow other operands on conversion to return class.
ans =
4 5 6 127 127 127
Junaid
on 27 Apr 2012
it might be because of C1, thought in given example it should not do this but if somewhere you have changed c1 to integer then it might be problem. first you type cast the c1
c1 = double(c1);
then
c2 = [c c1];
Categories
Find more on Logical 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!