Funções Matemáticas em Clipper

Convertendo String para Numérica

Números Inteiros

Long.parseLong

numeroDecimal = 15.75
parteInteira = Int(numeroDecimal) // parteInteira receberá 15

Números Reais

Double.parseDouble

stringNumero = "123.45"
numeroReal = Val(stringNumero) // numeroReal receberá 123.45

Boleanos

Boolean.parseBoolean

// Função para converter string em booleano
FUNCTION StringToBoolean(cString)
LOCAL lResult

// Verifica se a string representa verdadeiro
IF UPPER(cString) == "T"
lResult = .T. // Verdadeiro
// Verifica se a string representa falso
ELSEIF UPPER(cString) == "F"
lResult = .F. // Falso
// Caso contrário, a string não é reconhecida como booleana
ELSE
lResult = .F.
ENDIF

RETURN lResult

cStringVerdadeira = "T"
cStringFalsa = "F"

lBooleanVerdadeiro = StringToBoolean(cStringVerdadeira) // lBooleanVerdadeiro receberá .T.
lBooleanFalso = StringToBoolean(cStringFalsa) // lBooleanFalso receberá .F.

Arredondando valores

Math.floor

// Função para arredondar para baixo (equivalente a Math.floor)
FUNCTION Floor(nNumero)
RETURN Int(nNumero)

nNumeroOriginal = 10.75
nNumeroArredondado = Floor(nNumeroOriginal) // nNumeroArredondado receberá 10
Math.ceil

// Função para arredondar para cima (equivalente a Math.ceil)
FUNCTION Ceil(nNumero)
IF nNumero > 0
RETURN Int(nNumero) + IIF(Frac(nNumero) > 0, 1, 0)
ELSE
RETURN Int(nNumero)
ENDIF

nNumeroOriginal = 10.25
nNumeroArredondado = Ceil(nNumeroOriginal) // nNumeroArredondado receberá 11
Math.round

// Função para arredondamento (equivalente a Math.round)
FUNCTION Round(nNumero)
LOCAL nDecimal

nDecimal = Frac(nNumero)

// Se a parte decimal for maior ou igual a 0.5, arredonda para cima
IF nDecimal >= 0.5
RETURN Int(nNumero) + 1
// Caso contrário, arredonda para baixo
ELSE
RETURN Int(nNumero)
ENDIF

nNumeroOriginal = 10.75
nNumeroArredondado = Round(nNumeroOriginal) // nNumeroArredondado receberá 11
Math.trunc

// Função para truncar (equivalente a Math.trunc)
FUNCTION Trunc(nNumero)
RETURN Int(nNumero)

nNumeroOriginal = 10.75
nNumeroTruncado = Trunc(nNumeroOriginal) // nNumeroTruncado receberá 10

Digite um número com 3 casas decimais

 

// Função para formatar número com 3 casas decimais
FUNCTION FormatNumero(nNumero)
LOCAL cNumeroFormatado

// Converte o número em uma string
cNumeroFormatado = Str(nNumero, 15, 3)

RETURN cNumeroFormatado

// Neste exemplo, Str(nNumero, 15, 3) converte o número em uma string com no máximo 15 caracteres, incluindo 3 casas decimais. Este é apenas um exemplo básico, e você pode precisar ajustar a função conforme necessário, dependendo das suas necessidades específicas.

nNumeroOriginal = 10.12345
cNumeroFormatado = FormatNumero(nNumeroOriginal) // cNumeroFormatado receberá " 10.123"

Formatar moeda

toLocaleString

// Função para formatar moeda brasileira
FUNCTION FormatarMoeda(nValor)
LOCAL cMoedaFormatada

// Converte o número em uma string formatada como moeda
cMoedaFormatada = "$ " + LTrim(Str(nValor, 12, 2))

RETURN cMoedaFormatada

nValorOriginal = 1234.56
cMoedaFormatada = FormatarMoeda(nValorOriginal) // cMoedaFormatada receberá "$ 1,234.56"

Funções matemáticas comuns

Math.random

// Função para gerar número aleatório entre 0 e 1
FUNCTION Random()
RETURN Rand() / 32767.0

nNumeroAleatorio = Random() // nNumeroAleatorio receberá um valor entre 0 e 1
Math.abs

// Função para calcular o valor absoluto
FUNCTION Abs(nNumero)
IF nNumero >= 0
RETURN nNumero
ELSE
RETURN -nNumero
ENDIF

nNumeroOriginal = -5
nValorAbsoluto = Abs(nNumeroOriginal) // nValorAbsoluto receberá 5
Math.max

// Função para encontrar o valor máximo entre dois números
FUNCTION Max(nNumero1, nNumero2)
IF nNumero1 > nNumero2
RETURN nNumero1
ELSE
RETURN nNumero2
ENDIF

nValor1 = 10
nValor2 = 15
nMaximo = Max(nValor1, nValor2) // nMaximo receberá 15
int maximoEntreTres = Math.max(Math.max(numero1, numero2), numero3);
Math.min

// Função para encontrar o valor mínimo entre dois números
FUNCTION Min(nNumero1, nNumero2)
IF nNumero1 < nNumero2
RETURN nNumero1
ELSE
RETURN nNumero2
ENDIF

nValor1 = 10
nValor2 = 15
nMinimo = Min(nValor1, nValor2) // nMinimo receberá 10
int minimoEntreTres = Math.min(Math.min(numero1, numero2), numero3);
Math.pow

// Função para calcular potência
FUNCTION Pow(nBase, nExpoente)
LOCAL nResultado

nResultado = 1

FOR i = 1 TO nExpoente
nResultado *= nBase
NEXT i

RETURN nResultado

nBase = 2
nExpoente = 3
nResultado = Pow(nBase, nExpoente) // nResultado receberá 8
Math.sqrt

// Função para calcular a raiz quadrada
FUNCTION Sqrt(nNumero)
RETURN nNumero ^ 0.5

nNumeroOriginal = 25
nRaizQuadrada = Sqrt(nNumeroOriginal) // nRaizQuadrada receberá 5

Math.SQRT1_2

// Definindo a constante Math.SQRT1_2
#DEFINE Math_SQRT1_2 0.7071067811865476

public static final double SQRT1_2 = 0.7071067811865476;
Math.SQRT2

// Definindo a constante Math.SQRT2
#DEFINE Math_SQRT2 1.414213562373095

public static final double SQRT2 = 1.4142135623730951;
 
Math.cbrt

// Função para calcular a raiz cúbica
FUNCTION Cbrt(nNumero)
RETURN nNumero ^ (1.0 / 3.0)

nNumeroOriginal = 27
nRaizCubica = Cbrt(nNumeroOriginal) // nRaizCubica receberá 3

Math.sign
// Função para determinar o sinal de um número
FUNCTION Sign(nNumero)
IF nNumero > 0
RETURN 1 // Número positivo
ELSEIF nNumero < 0
RETURN -1 // Número negativo
ELSE
RETURN 0 // Número zero
ENDIF
nNumeroOriginal = -5
nSinal = Sign(nNumeroOriginal) // nSinal receberá -1

Funções trigonométricas

Math.PI

// Definindo a constante Math.PI
#DEFINE Math_PI 3.141592653589793

import math

circunferencia = 2 * math.pi * raio

function radianos(){
return Math.PI/180
}
// Função para converter graus para radianos
FUNCTION Radianos()
RETURN Pi() / 180
nAnguloGraus = 90
nAnguloRadianos = nAnguloGraus * Radianos() // nAnguloRadianos receberá aproximadamente 1.5707963267948966
 
Math.sin

// Função para converter graus para radianos
FUNCTION Radianos()
RETURN Pi() / 180

// Função para calcular o seno de um ângulo em graus
FUNCTION SenoGraus(nAnguloGraus)
RETURN Sin(nAnguloGraus * Radianos())
nAnguloGraus = 30
nSeno = SenoGraus(nAnguloGraus) // nSeno receberá aproximadamente 0.5
Math.cos
// Função para converter graus para radianos
FUNCTION Radianos()
RETURN Pi() / 180
// Função para calcular o cosseno de um ângulo em graus
FUNCTION CossenoGraus(nAnguloGraus)
RETURN Cos(nAnguloGraus * Radianos())

nAnguloGraus = 60
nCosseno = CossenoGraus(nAnguloGraus) // nCosseno receberá aproximadamente 0.5

Math.tan
// Função para converter graus para radianos
FUNCTION Radianos()
RETURN Pi() / 180
// Função para calcular a tangente de um ângulo em graus
FUNCTION TangenteGraus(nAnguloGraus)
RETURN Tan(nAnguloGraus * Radianos())

inAnguloGraus = 45
nTangente = TangenteGraus(nAnguloGraus) // nTangente receberá aproximadamente 1

 
Math.asin

// Função para calcular o arco seno de um valor
FUNCTION ArcoSeno(nValor)
RETURN Arcsin(nValor)

nValor = 0.5
nArcoSeno = ArcoSeno(nValor) // nArcoSeno receberá aproximadamente 0.5235987755982988
Math.acos

// Função para calcular o arco cosseno de um valor
FUNCTION ArcoCosseno(nValor)
RETURN Arccos(nValor)

nValor = 0.5
nArcoCosseno = ArcoCosseno(nValor) // nArcoCosseno receberá aproximadamente 1.0471975511965979
Math.atan

// Função para calcular a arco tangente de um valor
FUNCTION ArcoTangente(nValor)
RETURN Arctan(nValor)

nValor = 1
nArcoTangente = ArcoTangente(nValor) // nArcoTangente receberá aproximadamente 0.7853981633974483
 
Math.sinh

// Função para calcular o seno hiperbólico de um número
FUNCTION SenoHiperbolico(nNumero)
RETURN (Exp(nNumero) - Exp(-nNumero)) / 2

nNumeroOriginal = 2
nSenoHiperbolico = SenoHiperbolico(nNumeroOriginal) // nSenoHiperbolico receberá aproximadamente 3.6268604078470186
(e^x - e^(-x)) / 2
Math.cosh

// Função para calcular o cosseno hiperbólico de um número
FUNCTION CossenoHiperbolico(nNumero)
RETURN (Exp(nNumero) + Exp(-nNumero)) / 2

nNumeroOriginal = 2
nCossenoHiperbolico = CossenoHiperbolico(nNumeroOriginal) // nCossenoHiperbolico receberá aproximadamente 3.7621956910836314
(e^x + e^(-x)) / 2
Math.tanh
// Função para calcular a tangente hiperbólica de um número
FUNCTION TangenteHiperbolica(nNumero)
RETURN (Exp(nNumero) - Exp(-nNumero)) / (Exp(nNumero) + Exp(-nNumero))
nNumeroOriginal = 1
nTangenteHiperbolica = TangenteHiperbolica(nNumeroOriginal) // nTangenteHiperbolica receberá aproximadamente 0.7615941559557649
(e^x - e^(-x)) / (e^x + e^(-x))
 
Math.asinh

// Função para calcular o arco seno hiperbólico inverso de um número
FUNCTION ArcoSenoHiperbolicoInverso(nNumero)
RETURN Log(nNumero + Sqrt(nNumero^2 + 1))

nNumeroOriginal = 1.5
nArcoSenoHiperbolicoInverso = ArcoSenoHiperbolicoInverso(nNumeroOriginal)
// nArcoSenoHiperbolicoInverso receberá aproximadamente 0.9624236501192069
asinh(x) = ln(x + sqrt(x^2 + 1))
Math.acosh

// Função para calcular o arco cosseno hiperbólico inverso de um número
FUNCTION ArcoCossenoHiperbolicoInverso(nNumero)
RETURN Log(nNumero + Sqrt(nNumero^2 - 1))

nNumeroOriginal = 2
nArcoCossenoHiperbolicoInverso = ArcoCossenoHiperbolicoInverso(nNumeroOriginal)
// nArcoCossenoHiperbolicoInverso receberá aproximadamente 1.3169578969248166
acosh(x) = ln(x + sqrt(x^2 - 1))
Math.atanh

// Função para calcular o arco tangente hiperbólico inverso de um número
FUNCTION ArcoTangenteHiperbolicoInverso(nNumero)
RETURN 0.5 * Log((1 + nNumero) / (1 - nNumero))

nNumeroOriginal = 0.8
nArcoTangenteHiperbolicoInverso = ArcoTangenteHiperbolicoInverso(nNumeroOriginal)
// nArcoTangenteHiperbolicoInverso receberá aproximadamente 1.0986122886681098
atanh(x) = 0.5 * ln((1 + x) / (1 - x))

Logarítmos

Math.log

// Função para calcular o logaritmo natural
FUNCTION LogNatural(nNumero)
RETURN Log(nNumero)

nNumeroOriginal = 10
nLogaritmoNatural = LogNatural(nNumeroOriginal) // nLogaritmoNatural receberá 2.302585092994046
 

// Função para calcular o logaritmo em qualquer base
FUNCTION LogBase(nNumero, nBase)
RETURN Log(nNumero) / Log(nBase)

nNumeroOriginal = 100
nLogaritmoBase10 = LogBase(nNumeroOriginal, 10) // nLogaritmoBase10 receberá 2
Math.log10

// Função para calcular o logaritmo na base 10
FUNCTION Log10(nNumero)
RETURN Log(nNumero) / Log(10)

nNumeroOriginal = 100
nLogaritmoBase10 = Log10(nNumeroOriginal) // nLogaritmoBase10 receberá 2
 
Math.E

// Definindo a constante Math.E
#DEFINE Math_E 2.718281828459045

Math.LN2

// Definindo a constante Math.LN2
#DEFINE Math_LN2 0.693147180559945

Math.LOG2E

// Definindo a constante Math.LOG2E
#DEFINE Math_LOG2E 1.442695040888963

Math.LN10

i// Definindo a constante Math.LN10
#DEFINE Math_LN10 2.302585092994046

Math.LOG10E

// Definindo a constante Math.LOG10E
#DEFINE Math_LOG10E 0.434294481903252

 
Math.exp

nExpoente = 2
nResultado = Exp(nExpoente) // nResultado receberá o valor de e elevado à potência de 2

Math.log2

// Função para calcular o logaritmo na base 2
FUNCTION Log2(nNumero)
RETURN Log(nNumero) / Log(2)

nNumeroOriginal = 8
nLogaritmoBase2 = Log2(nNumeroOriginal) // nLogaritmoBase2 receberá 3
Math.log1p

// Função para calcular o logaritmo natural de 1 somado a um número
FUNCTION Log1p(nNumero)
RETURN Log(1 + nNumero)

nNumeroOriginal = 0.5
nLog1p = Log1p(nNumeroOriginal) // nLog1p receberá aproximadamente 0.4055