writeLinearVarDouble method

void writeLinearVarDouble(
  1. double value, {
  2. bool signed = true,
  3. int maxBits = 64,
  4. int maxDecimal = 8,
})

Implementation

void writeLinearVarDouble(double value,
    {bool signed = true, int maxBits = 64, int maxDecimal = 8}) {
  if (signed) {
    writeBit(value > 0);
  }
  writeLinearVarInt(value.truncate().abs(), signed: false, maxBits: maxBits);
  double decimal = double.parse(
      (value.abs() - value.truncate().abs()).toStringAsFixed(maxDecimal));
  int exponent = 0;

  while (decimal != decimal.truncate() && exponent < maxDecimal) {
    exponent++;
    decimal *= 10;
  }

  writeLinearVarInt(exponent,
      signed: false, maxBits: getBitsNeeded(maxDecimal));
  writeLinearVarInt(decimal.truncate(),
      signed: false, maxBits: getMaxBitsNeededForDigits(maxDecimal));
}