Problem while converting float

Prove it. Make a sketch that duplicates the problem, but doesn’t use sleep mode or interrupts.

I totally understand your point and I spent a lot of time last night going through the datasheet and browsing online and I know that Serial comms use interrupts but I don’t understand how the interrupts in my code can interfere with Serial comms. Plus I have a similar code where I use the same sleep modes the same interrupts and also serial but I do not get the same problem. It is basically the code for ADC noise reduction.

#include <avr/sleep.h>

const float Vref = 5.1;

void setup() {
  ADMUX = 0b01000000; // Use AVcc as ref and A0 as input
   ADCSRA |= 1<<ADEN; //enable ADC
  ADCSRA |= 1<<ADIE; //Generate an interrupt at end of ADC conversion to wake up from sleep
  ADCSRA |= ((1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0));    //Prescaler at 128 so deviding 16Mhz by 128 we get a clock frequency of 125kHz

void loop() 
{ // put your main code here, to run repeatedly:

 //float volts= (LowNoiseRead()+0.5)*Vref/1024.0;

unsigned int LowNoiseRead()


However, I will try to do as you say. Recreate the problem in a sketch without interrupts or sleep modes. Thank you.