How to get the last two digits of a number?
60 ビュー (過去 30 日間)
古いコメントを表示
Hello,
I have a table with 505 rows and 1 column. Each row contains a 4 digit number and from of these numbers I would like to extract the last two digits to add a second column to that table containing the last two digits of every number in the first column.
I would be grateful for any hints. Thank you
0 件のコメント
採用された回答
David Fletcher
2021 年 5 月 10 日
x=4974
y=floor((x/100-floor(x/100))*100)
3 件のコメント
Felician Putz
2022 年 1 月 22 日
Be careful with floor. This can give the wrong result for some numbers. Counter example: 1001, whose result is 0 for me because apparently floor(1.0000) is 0 for Matlab.
Image Analyst
2022 年 1 月 22 日
floor(1.0000)
x = 1001;
v = floor((x/100-floor(x/100))*100)
fprintf('%.32f', (x/100-floor(x/100))*100) % This is not 1
その他の回答 (1 件)
DGM
2021 年 5 月 10 日
Assuming they're integers:
% 10 rows random integers
n = (randi(8999,1,10)+1000)'
n = [n mod(n,100)]
If they aren't integers, you should decide how you want to round them first.
3 件のコメント
Adam Danz
2021 年 5 月 10 日
Either of the two existing solutions will work with 4-digit integers but note that if the 3rd digit is a 0 as in 4206, the extraction will be 6 and not 06 since matlab does not preserve the 0 place holder. If you want to retain the 0, you'll need to extract the digis as strings or character vectors.
Method 1: convert to string after extraction
rng(123) % for reprodicibility
x = round(rand(10,1)*10000);
lastTwo = mod(x,100);
charVec = compose('%02d',lastTwo); % for char-vectors
str = string(compose('%02d',mod(x,100))); % for string array
T = table(x, lastTwo, charVec, str)
Method 2: convert to string and then extract
rng(123) % for reprodicibility
x = round(rand(10,1)*10000);
xstr = string(x);
str = extractAfter(xstr,2);
T = table(x, lastTwo, str)
参考
カテゴリ
Help Center および File Exchange で Whos についてさらに検索
製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!