Xcode 、Android開発で4桁の 数値 (数値型)を1桁ずつ取得する方法

Xcode 、Android開発で4桁の 数値 で、千、百、十、一の位で数値を取得する方法です。

例 1234 →千の位:1、百の位:2、十の位:3、一の位:4
 ※4桁以外でもこの考えを応用すると使用可能です。

以下2方法があります。
1.計算により取得
2.数値型から文字型に変換して、再度数値型に変換


1.計算により取得

計算により各桁を取得していきます。

X_num:4桁の数値の変数
千の位:X_num_a、百の位:X_num_b、十の位:X_num_c、一の位:X_num_d

Objective-cの場合

1NSInteger X_num_a = X_num / 1000;
2NSInteger X_num_b = (X_num - (X_num_a * 1000)) / 100;
3NSInteger X_num_c = (X_num - (X_num_a * 1000) - (X_num_b * 100)) / 10;
4NSInteger X_num_d = X_num - (X_num_a * 1000) - (X_num_b * 100) - (X_num_c * 10);

・十から千の位の計算は、NSInteger型のため計算結果で小数点以下が発生しても対象外となります。
・X_num_dの計算で、X_num_cの計算式と同様の式で余り(/ → %)を求める計算もあります。

Androidの場合

1int X_num_a = X_num / 1000;
2int X_num_b = (X_num - (X_num_a * 1000)) / 100;
3int X_num_c = (X_num - (X_num_a * 1000) - (X_num_b * 100)) / 10;
4int X_num_d = X_num - (X_num_a * 1000) - (X_num_b * 100) - (X_num_c * 10);

2.数値型から文字型に変換して、再度数値型に変換

数字を文字に変換して、文字列操作を行い各桁の値を取得します。
1000以上(千の位が1以上)でない場合、桁数がずれる可能性があります。

Objective-cの場合

1NSInteger X_num = 1234;
2 
3//数字型から文字型に変換
4NSString *X_num_str = [NSString stringWithFormat:@"%ld",X_num];
5 
6//文字型で桁数で取得
7NSString *X_num_a_str = [X_num_str substringWithRange:NSMakeRange(0,1)];
8NSString *X_num_b_str = [X_num_str substringWithRange:NSMakeRange(1,1)];
9NSString *X_num_c_str = [X_num_str substringWithRange:NSMakeRange(2,1)];
10NSString *X_num_d_str = [X_num_str substringWithRange:NSMakeRange(3,1)];
11 
12//文字型を数値型に変換
13NSInteger X_num_a = [X_num_a_str intValue];
14NSInteger X_num_b = [X_num_b_str intValue];
15NSInteger X_num_c = [X_num_c_str intValue];
16NSInteger X_num_d = [X_num_d_str intValue];
17 
18//複合型も可能
19NSInteger X_num_a = [[NSString stringWithFormat:@"%ld",X_num]
20substringWithRange:NSMakeRange(0,1)] intValue];
21NSInteger X_num_b = [[NSString stringWithFormat:@"%ld",X_num]
22substringWithRange:NSMakeRange(1,1)] intValue];
23NSInteger X_num_c = [[NSString stringWithFormat:@"%ld",X_num]
24substringWithRange:NSMakeRange(2,1)] intValue];
25NSInteger X_num_d = [[NSString stringWithFormat:@"%ld",X_num]
26substringWithRange:NSMakeRange(3,1)] intValue];

Androidの場合

1//数字型から文字型に変換
2String X_num_str = String.valueOf(X_num);
3 
4//文字型で桁数で取得
5String X_num_a_str = X_num_str.substring(0,1);
6String X_num_b_str = X_num_str.substring(1,1);
7String X_num_c_str = X_num_str.substring(2,1);
8String X_num_d_str = X_num_str.substring(3,1);
9 
10//文字型を数値型に変換
11int X_num_a = Integer.parseInt(X_num_a_str);
12int X_num_b = Integer.parseInt(X_num_b_str);
13int X_num_c = Integer.parseInt(X_num_c_str);
14int X_num_d = Integer.parseInt(X_num_d_str);
Verified by MonsterInsights