readSteppedVarDouble method
double
readSteppedVarDouble(
{ - bool signed = true,
- List<int> bitLimits = stepList2b,
- List<int> decimalBitLimits = stepDecList2b,
})
Implementation
double readSteppedVarDouble(
{bool signed = true,
List<int> bitLimits = stepList2b,
List<int> decimalBitLimits = stepDecList2b}) {
double sign = signed
? !readBit()
? -1.0
: 1.0
: 1.0;
int maxDecimal = pow(2, decimalBitLimits.last).toInt() - 1;
double base =
readSteppedVarInt(signed: false, bitLimits: bitLimits).toDouble();
int exponent =
readSteppedVarInt(signed: false, bitLimits: decimalBitLimits);
int step = findBitStep(exponent, decimalBitLimits);
int decimal = readInt(
signed: false,
bits: getMaxBitsNeededForDigits(
pow(2, decimalBitLimits[step]).toInt() - 1));
return double.parse((sign * (base + (decimal / pow(10, exponent))))
.toStringAsFixed(maxDecimal));
}