Notice
Recent Posts
Recent Comments
Link
투케이2K
119. (kotlin/코틀린) [유틸 파일] doubleCutLength : Double 소수점 데이터를 특정 소수점 자릿수 기준으로 자르기 본문
Kotlin
119. (kotlin/코틀린) [유틸 파일] doubleCutLength : Double 소수점 데이터를 특정 소수점 자릿수 기준으로 자르기
투케이2K 2022. 12. 21. 06:37[개발 환경 설정]
개발 툴 : AndroidStudio
개발 언어 : Kotlin
[소스 코드]
// TODO [SEARCH FAST] : [RETURN] doubleCutLength : Double 소수점 데이터를 특정 소수점 자릿수 기준으로 자르기 실시 [반올림 없음]
fun doubleCutLength(doubleData: Double, length: Int) : String {
/**
* // -----------------------------------------
* [doubleCutLength 메소드 설명]
* // -----------------------------------------
* 1. Double 소수점 데이터를 특정 소수점 자릿수 기준으로 자르기 실시 [반올림 없음]
* // -----------------------------------------
* 2. 호출 방식 :
* C_Util.doubleCutLength(123.4567, 2)
* C_Util.doubleCutLength(-123.4567, 2)
* // -----------------------------------------
* 3. 리턴 데이터 : 123.45 : 소수점 특정 자릿수 기준 제한 문자열 데이터
* // -----------------------------------------
* */
// [리턴 변수 선언]
var result = ""
// [인풋 데이터 체크 수행 실시]
if (length >= 0
&& C_Util.stringNotNull(doubleData.toString()) == true){ // [0 자릿수 이상 들어온 경우 / 널이 아닌 경우]
try {
// [필요 변수 선언 실시]
var dotCount = 0 // 점 개수
var dotLocation = 0 // 점 위치
var dotLength = 0 // 소수점 이하 자릿수 기준
// [for 문을 돌면서 데이터 확인 실시]
val strData = doubleData.toString()
for (i in 0 .. strData.length-1 step(1)) {
if (strData[i] == '.') { // 문자열 특정 자릿수가 점 (.) 인 경우
dotCount = dotCount + 1 // 카운트 증가
dotLocation = i // 위치 지정
val subString = strData.substring(dotLocation + 1, strData.length)
dotLength = subString.length // 소수점 이하 자릿수 확인
}
}
/*
Log.i("---","---")
Log.d("//===========//","================================================")
Log.i("","\n"+"[C_Util >> doubleCutLength() :: Double 소수점 데이터를 특정 소수점 자릿수 기준으로 자르기 실시]")
Log.i("","\n"+"[dotCount [소수점 개수] :: "+dotCount.toString()+"]")
Log.i("","\n"+"[dotLocation [소수점 위치] :: "+dotLocation.toString()+"]")
Log.i("","\n"+"[dotLength [소수점 이하 자릿수] :: "+dotLength.toString()+"]")
Log.d("//===========//","================================================")
Log.i("---","---");
// */
// [정상적으로 소수점이 포함된 경우]
if (dotCount == 1) {
if (length > dotLength) { // [원본 데이터 보다 인풋값이 큰 경우 >> 0 값으로 채움]
result = strData.substring(0, strData.length)
val zeroCount = length - dotLength
for (j in 0 .. zeroCount-1 step(1)) {
result = result + "0"
}
} else {
result = if (length == 0) {
strData.substring(0, dotLocation + length)
} else {
strData.substring(0, dotLocation + length + 1)
}
}
}
}
catch (e: Exception) {
e.printStackTrace()
}
}
// [로그 출력 실시]
///*
Log.i("---","---")
Log.d("//===========//","================================================")
Log.i("","\n"+"[C_Util >> doubleCutLength() :: Double 소수점 데이터를 특정 소수점 자릿수 기준으로 자르기 실시]")
Log.i("","\n"+"[INPUT [double] :: "+doubleData.toString()+"]")
Log.i("","\n"+"[INPUT [length] :: "+length.toString()+"]")
Log.i("","\n"+"[RETURN [string] :: "+result+"]")
Log.d("//===========//","================================================")
Log.i("---","---")
// */
// [리턴 반환 실시]
return result
}
[결과 출력]
반응형
'Kotlin' 카테고리의 다른 글
Comments