writeDouble method

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

Implementation

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

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

  writeInt(exponent, signed: false, bits: getBitsNeeded(maxDecimal));
  writeInt(decimal.truncate(),
      signed: false, bits: getMaxBitsNeededForDigits(maxDecimal));
}