Files
immich/mobile-v2/lib/utils/extensions/number.extension.dart
shenlong-tanwen 8450c8cc4f feat: appbar
2025-02-26 08:58:19 +05:30

25 lines
579 B
Dart

import 'dart:math';
extension NumberToSizeExtension on num {
String formatAsSize({int noOfDecimals = 0}) {
const List<String> units = [
'B',
'KB',
'MB',
'GB',
'TB',
'PB',
'EB',
'ZB',
'YB',
];
if (this == 0) return '0 B';
final index = (log(this) / log(1024)).floor();
final byteIndex = index.clamp(0, units.length - 1);
final size = (this / pow(1024, byteIndex)).round();
// ignore: avoid-unsafe-collection-methods
return '${size.toStringAsFixed(noOfDecimals)} ${units[byteIndex]}';
}
}