def num_ptb2us(str_number, **kwargs):
    """
    Trasnforma um número do formato brasileiro (0.000,00 ou 0.000,00%) para o formato americano (0,000.00).
    :param str_number: string com o número no formato brasileiro que será transformado
    :return: número (inteiro ou float) transformado. Se número for uma porcentagem, retorna o resultado dividido por 100
    """
    __param = {}
    for __item in kwargs:
        __param[__item.upper()] = kwargs[__item]
    try:
        __ignora_formato_us = __param['NUM_US']
    except KeyError:
        __ignora_formato_us = False
    try:
        __devolve_zero_em_erro = __param['DEVOLVE_ZERO']
    except KeyError:
        __devolve_zero_em_erro = True
    try:
        __devolve_erro = __param['DEVOLVE_ERRO']
    except KeyError:
        __devolve_erro = False
    try:
        if __ignora_formato_us:
            number_to_return = float(str_number.upper().replace('M',
                '000000').replace('K', '000').replace('B', '000000000').
                replace('R$ ', '').replace('$', '').replace(',', '').
                replace('\n', '').replace('%', '').strip())
        else:
            number_to_return = float(str_number.upper().replace('M',
                '000000').replace('K', '000').replace('B', '000000000').
                replace('R$ ', '').replace('$', '').replace('.', '').
                replace(',', '.').replace('\n', '').replace('%', '').strip())
        if str_number.find('%') != -1:
            number_to_return = number_to_return / 100
    except (ValueError, AttributeError):
        try:
            number_to_return = float(str_number)
        except:
            if __devolve_erro:
                number_to_return = 'ERRO'
            elif __devolve_zero_em_erro:
                number_to_return = 0
            else:
                number_to_return = str_number
    return number_to_return
