Type Float et Serial.print() problème perte de chiffres significatif

Avec ce type de code sur un arduino DUE il est possible d'avoir jusqu'à 15 décimales avec précision:

uint64_t bignum0 = 0xFFFFFFFFFFFFFFllu;
uint64_t bignum1 = (1llu<<64) - 1; //pow(2, 64) - 1;
int64_t bignum2 = -(1llu<<62); //- pow(2, 62);
double bignum3 = -1.12345678987654321;
double bignum4 = -166666666666666666666e-20;

void setup() {
  Serial.begin(250000);
}

void loop() {
  printf(" bignum0 = 0x%llx\n", bignum0);
  printf(" bignum0 = 0x%llX\n", bignum0);
  printf(" bignum1 = %llu\n", bignum1);
  printf(" bignum2 = %lld\n", bignum2);
  Serial.print(" bignum3 = ");
  Serial.println(bignum3,15);
  Serial.print(" bignum4 = ");
  Serial.println(bignum4,16);
  delay(3000);
}
/***************  OUTPUTS    **************
 bignum0 = 0xffffffffffffff
 bignum0 = 0xFFFFFFFFFFFFFF
 bignum1 = 18446744073709551615
 bignum2 = -4611686018427387904
 bignum3 = -1.123456789876543
 bignum4 = -1.6666666666666667

********************************************/