fractionalIndex method
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;
}