Files
PiliPlus/lib/utils/extension/num_ext.dart
2026-05-11 12:54:48 +08:00

30 lines
835 B
Dart

import 'dart:math' show pow;
extension IntExt on int? {
int? operator +(int other) => this == null ? null : this! + other;
int? operator -(int other) => this == null ? null : this! - other;
}
extension DoubleExt on double {
double toPrecision(int fractionDigits) {
final mod = pow(10, fractionDigits).toDouble();
return (this * mod).roundToDouble() / mod;
}
bool equals(double other, [double epsilon = 1e-10]) =>
(this - other).abs() < epsilon;
double lerp(double a, double b) {
assert(
a.isFinite,
'Cannot interpolate between finite and non-finite values',
);
assert(
b.isFinite,
'Cannot interpolate between finite and non-finite values',
);
assert(isFinite, 't must be finite when interpolating between values');
return a * (1.0 - this) + b * this;
}
}