질문 : String val = '1111.22333';
DecimalFormat df = new DecimalFormat("#,###,###,##0.00");
df.format(Long.parseLong(val));
이 java 소스를 js로 바꾸면?
주어진 Java 소스 코드를 JavaScript로 변환하면 아래와 같습니다:
javascriptconst val = '1111.22333';
const formattedValue = new Intl.NumberFormat('en-US', {
minimumFractionDigits: 2,
maximumFractionDigits: 2
}).format(parseFloat(val));
console.log(formattedValue);
위의 코드에서 사용된 내용을 설명하겠습니다:
-
const val = '1111.22333';: 문자열 val에 '1111.22333'을 할당합니다.
-
const formattedValue = new Intl.NumberFormat('en-US', { ... }).format(parseFloat(val));: Intl.NumberFormat 객체를 사용하여 숫자 포맷팅을 수행합니다. 'en-US'는 미국 로캘을 나타냅니다. 포맷팅 옵션은 객체 안에 minimumFractionDigits와 maximumFractionDigits를 설정하여 소수점 이하 둘째 자리까지 표시되도록 합니다. parseFloat(val)로 문자열을 숫자로 변환한 후 format() 메서드를 사용하여 숫자를 포맷합니다.
-
console.log(formattedValue);: 포맷된 숫자를 콘솔에 출력합니다.
이렇게 JavaScript 코드로 변환하여 사용할 수 있습니다. 위의 코드는 Intl.NumberFormat 객체를 활용하여 Java의 DecimalFormat과 유사한 포맷팅을 수행하는 방식입니다.
질문 : Intl.NumberFormat 을 안쓰고는?
Intl.NumberFormat을 사용하지 않고도 주어진 숫자를 세 자릿수마다 쉼표로 구분하고 소수점 이하 둘째 자리까지 나타내는 JavaScript 소스 코드는 다음과 같습니다:
위의 코드에서 사용된 formatNumber() 함수는 다음과 같은 작업을 수행합니다:
javascriptfunction formatNumber(number) {
const parts = number.toFixed(2).split('.');
parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ',');
return parts.join('.');
}
const number = 1111.22333;
const formattedNumber = formatNumber(number);
console.log(formattedNumber);
- number.toFixed(2)를 사용하여 숫자를 소수점 이하 둘째 자리까지 나타내는 문자열로 변환합니다.
- split('.')을 사용하여 정수부분과 소수부분으로 문자열을 분할합니다.
- 정수부분에 정규식 \B(?=(\d{3})+(?!\d))을 사용하여 세 자릿수마다 쉼표로 구분하여 포맷합니다.
- 최종적으로 분할된 부분을 합쳐서 포맷팅된 문자열을 반환합니다.
이를 통해 1111.22333은 1,111.22로 포맷될 것입니다. 이 코드는 Intl.NumberFormat를 사용하지 않고도 동일한 결과를 얻을 수 있는 방법 중 하나입니다.
'gpt 정리' 카테고리의 다른 글
Math.ceil() (0) | 2024.02.12 |
---|---|
타입 강제 변환 (0) | 2024.02.12 |
Array 선언 정리 (0) | 2024.02.09 |
replaceAll() (0) | 2024.02.09 |
vue 에서 focus out 하는 방법 (0) | 2024.02.09 |