decimal 패키지는 Dart에서 정밀한 십진수 계산을 제공하여 부동소수점 연산에서 흔히 발생하는 정밀도 손실 없이 십진수를 정확하게 다룰 수 있게 해줍니다. 정확한 십진수 표현과 산술을 지원하므로 금융 계산 및 높은 정확도가 필요한 기타 시나리오에 적합합니다. 이 패키지는 모바일, 웹, 데스크톱을 포함한 모든 주요 플랫폼과 호환됩니다. 반올림 모드와 스케일에 대한 완전한 제어를 가능하게 하는 깔끔한 API를 제공하여 십진수 값을 생성하고 조작하며 형식화할 수 있습니다.
사용 사례
재무 계산
과학 계산
통화 처리
정확한 데이터 처리
단위 변환
주요 기능
고정밀 소수 연산
부동 소수점 정밀도 손실 없음
반올림 모드 지원
크로스 플랫폼 호환성
사용하기 쉬운 API
적합한 대상
정확한 십진수 수학을 필요로 하는 응용 프로그램
재무 또는 회계 소프트웨어
정밀도가 중요한 시스템
개발자들이 부동소수점 정확도 문제를 피하고 있습니다
고려 사항
더블보다 약간 높은 메모리 사용량
성능 집약적인 수치 작업 부하에 최적화되지 않음
내장 숫자 유형 대신 명시적인 사용이 필요합니다
원본 README
연결된 소스 저장소의 README 원문 스냅샷입니다. 최신 내용은 저장소에서 확인하세요.
Dart Decimals
This project enable to make computations on decimal numbers without losing precision like double operations.
For instance :
// with doubleprint(0.2 + 0.1); // displays 0.30000000000000004// with decimalprint(Decimal.parse('0.2') + Decimal.parse('0.1')); // displays 0.3
Usage
To use this library in your code :
add a dependency in your pubspec.yaml :
dependencies:decimal:
add import in your dart code :
import'package:decimal/decimal.dart';
Start computing using Decimal.parse('1.23').
Hint : To make your code shorter you can define a shortcut for Decimal.parse :
final d = (String s) => Decimal.parse(s);
d('0.2') + d('0.1'); // => 0.3
Formatting with intl
You can use the intl package to format decimal
with DecimalFormat from the package:decimal/intl.dart library:
import'package:decimal/decimal.dart';
import'package:decimal/intl.dart';
main() {
var value = Decimal.parse('1234.56');
var formatter = DecimalFormatter(NumberFormat.decimalPattern('en-US'));
print(formatter.format(value));
}
Tip: you can define an extension to make it more fluent:
extensiononDecimal {
StringformatWith(NumberFormat formatter) => formatter.format(DecimalIntl(this));
}
main() {
var value = Decimal.parse('1234.56');
var formatter = DecimalFormatter(NumberFormat.decimalPattern('en-US'));
print(value.formatWith(formatter));
}
WARNING: For now (2024.05.30) intl doesn't work with NumberFormat.maximumFractionDigits greater than 15 on web plateform and 18 otherwise.
Parsing with intl
You can use the NumberFormat from intl package to parse formatted decimals
var currencyFormatter = DecimalFormatter(NumberFormat.simpleCurrency(name: 'USD'));
currencyFormatter.parse('\$3.14'); // => 3.14