문서의 선택한 두 판 사이의 차이를 보여줍니다.
다음 판 | 이전 판 마지막 판 양쪽 다음 판 | ||
java:number [2015/07/10 17:42] kwon37xi 만듦 |
java:number [2020/08/11 14:19] kwon37xi [Hex 16진수] |
||
---|---|---|---|
줄 1: | 줄 1: | ||
====== Java Number ====== | ====== Java Number ====== | ||
- | ===== 숫자들 간의 Type 무시 비교 ===== | + | ===== 숫자들 간의 Type 무시 비교 |
* 숫자들 간의 비교시 (특히 View 템플릿용 비교 연산자 등에서) 숫자의 Type을 무시하고 비교해야 할 때가 있다. | * 숫자들 간의 비교시 (특히 View 템플릿용 비교 연산자 등에서) 숫자의 Type을 무시하고 비교해야 할 때가 있다. | ||
* [[http:// | * [[http:// | ||
<code java> | <code java> | ||
public int compare(final Number x, final Number y) { | public int compare(final Number x, final Number y) { | ||
- | if(isSpecial(x) || isSpecial(y)) | + | if(isSpecial(x) || isSpecial(y)) |
return Double.compare(x.doubleValue(), | return Double.compare(x.doubleValue(), | ||
- | else | + | |
+ | // x, y의 class가 동일하다면 y.compareTo(y) 만하도록 처리하면 성능이 좋아질 수 있다. | ||
+ | // x, y의 class가 다를 경우에만 BigDecimal로 변환한다. | ||
return toBigDecimal(x).compareTo(toBigDecimal(y)); | return toBigDecimal(x).compareTo(toBigDecimal(y)); | ||
+ | } | ||
} | } | ||
줄 28: | 줄 31: | ||
return new BigDecimal(number.longValue()); | return new BigDecimal(number.longValue()); | ||
if(number instanceof Float || number instanceof Double) | if(number instanceof Float || number instanceof Double) | ||
- | return new BigDecimal(number.doubleValue()); | + | |
+ | | ||
try { | try { | ||
줄 40: | 줄 44: | ||
</ | </ | ||
* '' | * '' | ||
+ | * 비교 대상이 되는 두 객체가 동일 클래스 인스턴스라면 '' | ||
* 특수한 숫자 객체를 제외한 int 계열의 숫자는 바로 '' | * 특수한 숫자 객체를 제외한 int 계열의 숫자는 바로 '' | ||
- | | + | |
+ | ===== Hex 16진수 ===== | ||
+ | | ||
+ | * [[http:// | ||
+ | * 그러나 hex는 보통 2자리씩 이뤄지는데 때로 앞자리가 0으로 시작하면 | ||
+ | |||
+ | <code java> | ||
+ | // Long 값을 16자리 Hex 문자열로 | ||
+ | String hex = String.format(" | ||
+ | </ | ||
+ | * [[https:// | ||
+ | * Apache Commons Codec | ||
+ | <code java> | ||
+ | import org.apache.commons.codec.binary.Hex; | ||
+ | ... | ||
+ | Hex.encodeHexString(someByteArray)); | ||
+ | </ | ||
+ | * 순수 Java | ||
+ | |||
+ | <code java> | ||
+ | byte bytes[] = {(byte)0, (byte)0, (byte)134, (byte)0, (byte)61}; | ||
+ | String hex = javax.xml.bind.DatatypeConverter.printHexBinary(bytes); | ||
+ | </ |