NumLib - Funções para trabalhar com números

Compartilhe seus scripts, funções, ferramentas e programas

Moderator: Gio

pedro45_vs
Posts: 39
Joined: 28 Jun 2020, 18:46

NumLib - Funções para trabalhar com números

08 Sep 2023, 14:31

Funções úteis para se trabalhar com formatos brasileiros mais comuns.

Code: Select all

/************************************************************************
 * @description Biblioteca para trabalhar com números em padrões diferentes
 * @file NumLib.ahk
 * @author Pedro Henrique C. Xavier
 * @date 2023/08/30
 * @version 2.0.6
 ***********************************************************************/

#Requires AutoHotKey v2.0

/**
 * Retorna um número formatado com separador de milhar. Ex 1.234,56
 * @param {number} num Número a ser convertido, tanto nativo quanto no formato brasileiro
 * @param {number} dec Quantidade de casas decimais retornadas
 * @returns {string} String formatada
 */
milhar(num := 0, dec := 2)
{
    num := !IsNumber(num) ? ToNum(num) : num
    return RegExReplace(StrReplace(Round(num, dec), '.', ','), '\d(?=(\d{3})+\D)', '$0.')
}

/**
 * Converte um número no padrão brasileiro para o formato nativo AutoHotkey
 * @param {string} str Número no padrão brasileiro. Ex. 1.234,56
 * @returns {Number} Número nativo
 */
ToNum(str := 0) => +StrReplace(StrReplace(str || 0, '.'), ',', '.')

/**
 * Retorna verdadeiro se o valor estiver entre o valor mínimo e o máximo
 * @param value Valor a ser comparado
 * @param valueMin Valor mínimo
 * @param valueMax Valor máximo
 * @returns {boolean} verdadeiro ou falso
 */
IsBetween(value, valueMin, valueMax) => Value >= valueMin && Value <= ValueMax

/**
 * Converte números bancários em números nativos AutoHotKey
 * Ex1.: 125,25C   -> 125.25
 * Ex2.: 1.335,37D -> -1335.37
 * @param num Número em formato bancário
 * @returns {number}
 */
ConverterNumBancario(num)
{
    if RegExMatch(num, '(-?\d+(?:\.\d{3})*\,\d\d)\s?([CD]?)', &re)
        return (re[2] = 'D') ? -ToNum(re[1]) : ToNum(re[1])
}

Return to “Scripts e Funções”

Who is online

Users browsing this forum: No registered users and 53 guests