canStore static method
Return true if double val to be stored in FixedPointValue
with integerWidth and fractionWidth lengths without overflowing.
Implementation
static bool canStore(double val,
{required bool signed,
required int integerWidth,
required int fractionWidth}) {
final w = signed
? 1 + integerWidth + fractionWidth
: integerWidth + fractionWidth;
if (val.isFinite) {
final bigIntegerValue = BigInt.from(val * pow(2.0, fractionWidth));
final negBigIntegerValue = BigInt.from(-val * pow(2.0, fractionWidth));
final l = (val < 0.0)
? max(bigIntegerValue.bitLength, negBigIntegerValue.bitLength)
: bigIntegerValue.bitLength;
return l <= w;
}
return false;
}