writeSteppedVarDouble method
void
writeSteppedVarDouble(})
Implementation
void writeSteppedVarDouble(double value,
{bool signed = true,
List<int> bitLimits = stepList2b,
List<int> decimalBitLimits = stepDecList2b}) {
if (signed) {
writeBit(value > 0);
}
int maxDecimal = pow(2, decimalBitLimits.last).toInt() - 1;
writeSteppedVarInt(value.truncate().abs(),
signed: false, bitLimits: bitLimits);
double decimal = double.parse(
(value.abs() - value.truncate().abs()).toStringAsFixed(maxDecimal));
int exponent = 0;
while (decimal != decimal.truncate() && exponent < maxDecimal) {
exponent++;
decimal *= 10;
}
writeSteppedVarInt(exponent, signed: false, bitLimits: decimalBitLimits);
writeInt(decimal.truncate(),
signed: false,
bits: getMaxBitsNeededForDigits(
pow(2, decimalBitLimits[findBitStep(exponent, decimalBitLimits)])
.toInt() -
1));
}