2017年7月16日

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の場合

NSInteger X_num_a = X_num / 1000;
NSInteger X_num_b = (X_num - (X_num_a * 1000)) / 100;
NSInteger X_num_c = (X_num - (X_num_a * 1000) - (X_num_b * 100)) / 10;
NSInteger 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の場合

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

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

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

Objective-cの場合

NSInteger X_num = 1234;

//数字型から文字型に変換
NSString *X_num_str = [NSString stringWithFormat:@"%ld",X_num];

//文字型で桁数で取得
NSString *X_num_a_str = [X_num_str substringWithRange:NSMakeRange(0,1)];
NSString *X_num_b_str = [X_num_str substringWithRange:NSMakeRange(1,1)];
NSString *X_num_c_str = [X_num_str substringWithRange:NSMakeRange(2,1)];
NSString *X_num_d_str = [X_num_str substringWithRange:NSMakeRange(3,1)];

//文字型を数値型に変換
NSInteger X_num_a = [X_num_a_str intValue];
NSInteger X_num_b = [X_num_b_str intValue];
NSInteger X_num_c = [X_num_c_str intValue];
NSInteger X_num_d = [X_num_d_str intValue];

//複合型も可能
NSInteger X_num_a = [[NSString stringWithFormat:@"%ld",X_num] substringWithRange:NSMakeRange(0,1)] intValue];
NSInteger X_num_b = [[NSString stringWithFormat:@"%ld",X_num] substringWithRange:NSMakeRange(1,1)] intValue];
NSInteger X_num_c = [[NSString stringWithFormat:@"%ld",X_num] substringWithRange:NSMakeRange(2,1)] intValue];
NSInteger X_num_d = [[NSString stringWithFormat:@"%ld",X_num] substringWithRange:NSMakeRange(3,1)] intValue];

Androidの場合

//数字型から文字型に変換
String X_num_str = String.valueOf(X_num);

//文字型で桁数で取得
String X_num_a_str = X_num_str.substring(0,1);
String X_num_b_str = X_num_str.substring(1,1);
String X_num_c_str = X_num_str.substring(2,1);
String X_num_d_str = X_num_str.substring(3,1);

//文字型を数値型に変換
int X_num_a = Integer.parseInt(X_num_a_str);
int X_num_b = Integer.parseInt(X_num_b_str);
int X_num_c = Integer.parseInt(X_num_c_str);
int X_num_d = Integer.parseInt(X_num_d_str);