Description

Serial.parseFloat() retrieves the first valid floating point number from the Serial buffer. parseFloat() is terminated by the first character that is not a floating point number. The function terminates if it times out (see Serial.setTimeout()).

Serial.parseFloat() inherits from the Stream utility class.

Syntax

Use one of the following function variants to search for a floating-point number on the serial buffer:

  • Serial.parseFloat()
  • Serial.parseFloat(lookahead)
  • Serial.parseFloat(lookahead, ignore)

Parameters

The function admits the following objects and parameters:

Serial: serial port object. See the list of available serial ports for each board on the Serial main page.

lookahead: the mode used to look ahead in the stream for a floating point number. Allowed data types: LookaheadMode. Allowed lookahead values:

  • SKIP_ALL: all characters other than a minus sign, decimal point, or digits are ignored when scanning the stream for a floating point number. This is the default mode.
  • SKIP_NONE: Nothing is skipped, and the stream is not touched unless the first waiting character is valid.
  • SKIP_WHITESPACE: Only tabs, spaces, line feeds, and carriage returns are skipped.

ignore: used to skip the indicated char in the search. Used for example to skip thousands divider. Allowed data types: char

Returns

The function returns the first floating-point number found. Data type: float.

Example Code

The following code extracts the first valid floating point number received on the serial:

void setup() {
  Serial.begin(9600);
  while (!Serial)
    ;

  Serial.println("Enter a floating-point number:");  // try with a mixed phrase e.g. "The size of the box is 3.5 mm"
}

void loop() {
  if (Serial.available()) {
    float number = Serial.parseFloat();
    if (number != 0) {
      Serial.print("You entered: ");
      Serial.println(number);
    }
  }
}

See also