roundToProfile method

ByteConverter roundToProfile(
  1. StorageProfile profile, {
  2. String? alignment,
  3. RoundingMode? rounding,
})

Aligns this value to a StorageProfile bucket.

final profile = StorageProfile.ssd();
final size = ByteConverter.fromKiloBytes(100);
print(size.storage.roundToProfile(profile));

Implementation

ByteConverter roundToProfile(
  StorageProfile profile, {
  String? alignment,
  RoundingMode? rounding,
}) {
  final resolved = profile.resolve(alignment);
  final blockSize = resolved.blockSizeBytes.toDouble();
  final mode = profile.roundingFor(
    alignment: alignment,
    override: rounding,
  );
  final quotient = _bytes / blockSize;
  final multiplier = switch (mode) {
    RoundingMode.floor => quotient.floor(),
    RoundingMode.ceil => quotient.ceil(),
    RoundingMode.round => quotient.round(),
  };
  return ByteConverter(multiplier * blockSize);
}