728x90
decimal 패키지
import 'package:decimal/decimal.dart';
import 'package:decimal/intl.dart';
final d = Decimal.parse('12345.12345');
print(NumberFormat.decimalPattern('ko_KR').format(DecimalIntl(d))); // 12,345.123
print(NumberFormat.decimalPattern('en_US').format(DecimalIntl(d))); // 12,345.123
- Decimal.parse() 정적 메소드로 문자열을 십진수 객체로 얻는다.
- ko_KR, en_US 로케일 출력 모두 기본 설정은 세자리 수마다 콤마, 소숫점 셋째 자리까지 표시이다.
- decimal 패키지가 제공하는 intl로 출력하는 것보다는 아래 intl 패키지에서 출력하는 것이 더 간편하다.
변환 메소드
final d = Decimal.parse('12345.12345');
print(d.toString()); // 12345.12345
print(d.toBigInt()); // 12345
print(d.toDouble()); // 12345.12345
print(d.toStringAsFixed(2)); // 12345.12
세 자리수 콤마를 꼭 찍어야 할 필요가 있는 것이 아니라면 toStringAsFixed(소숫점자리수) 출력으로 충분하다.
intl 패키지로 형식화 출력
일반 숫자
import 'package:intl/intl.dart';
void main() {
final f = NumberFormat('#,##0.0#', 'ko_KR');
print(f.format(12345.12345)); // 12,345.12
}
- 0: 한 자리 숫자
- #: 한 자리 숫자, 0일 경우에는 표시 안 함
- ,; 콤마, 보통 세 자리수마다 구분
final d = Decimal.parse('12345.12345');
final f = NumberFormat('#,##0.0#', 'ko_KR');
print(f.format(d.toDouble())); // 12,345.12
화폐
f = NumberFormat.currency(locale: "ko_KR", symbol: "₩");
print(f.format(12345.12345)); // ₩12,345
f = NumberFormat.currency(locale: "en_US", symbol: "\$");
print(f.format(12345.12345)); // $12,345.12
final d = Decimal.parse('12345.12345');
final f = NumberFormat.currency(locale: "ko_KR", symbol: "₩");
print(f.format(d.toDouble())); // 12,345.12
막상 한국에서는 ₩ 기호보다는 원 글자를 더 많이 쓰기 때문에 그냥 수치형식으로 바꾸고 원을 붙이는 것이 더 나을 수 있다.
728x90
LIST
'Flutter' 카테고리의 다른 글
Flutter - yaml & pubspec.yaml (2) | 2023.11.08 |
---|---|
Flutter - abstract class (0) | 2023.11.08 |
Flutter - 날짜 & 시간 (0) | 2023.11.08 |
Flutter - WebScoket (2) | 2023.11.07 |
Flutter - JWT (1) | 2023.11.07 |