fractionalIndex method

T fractionalIndex(
  1. double fraction
)

Returns value closest to the fractional index (between 0.0 and 1.0).

Throws ArgumentError if argument is out of range.

Throws StateError if the list is empty.

Example

import 'package:calc/calc.dart';

void main() {
  final list = [1,2,3,4,5];

  // Print median (assuming odd number of values)
  final median = list.fractionalIndex(0.5);
  print('median: $median');


  // Print 95th percentile
  final percentile95 = list.fractionalIndex(0.95);
  print('95th percentile: $percentile95');
}

Implementation

T fractionalIndex(double fraction) {
  if (fraction.isNaN || fraction < 0.0 || fraction > 1.0) {
    throw ArgumentError.value(fraction, 'fraction');
  }
  if (isEmpty) {
    throw StateError('Empty iterable');
  }
  final length = this.length;
  if (length == 0) {
    throw StateError('The iterable is empty');
  }
  var n = (fraction * (length - 1)).round();
  T? last;
  final tail = skip(n);
  if (tail.isEmpty) {
    return last as T;
  }
  return tail.first;
}