from typing import Tuple


def get_first_number(expression: str) -> Tuple[float, str]:
    """
    Reads the number in the beginning of the expression string.
    This number can begin with a sign +-, a number or the decimal point

    :param expression: str of the expression

    :return: float value of the number in the beginning and the string of the remaining
             expression
    """
    numberstring = ''
    found_decimal_point = False
    for char in expression:
        if char.isdecimal():
            numberstring += char
        elif char == '.':
            if found_decimal_point:
                raise ValueError('Cannot parse number: Found two decimal points')
            found_decimal_point = True
            numberstring += char
        elif char in ['+', '-']:
            if len(numberstring) == 0:
                numberstring += char
            else:
                break
        else:
            break
    return float(numberstring), expression[len(numberstring):]