MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access


2 participantes

    Função de conversão de Decimal para Fração

    thiagomcosta
    thiagomcosta
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 377
    Registrado : 23/01/2017

    Função de conversão de Decimal para Fração Empty Função de conversão de Decimal para Fração

    Mensagem  thiagomcosta 1/11/2018, 20:01

    Função para converter de decimal para fração. (ATENÇÃO: foi testada rapidamente com alguns poucos valores)

    Limitei até a 4a. casa decimal devido à estouros de memória.

    Se alguém souber uma solução para calcular acima desta quantidade serei muito grato (acho que deve existir algum outro jeito sim).

    Entrada é um número decimal
    Saída uma string com a fração

    Código:
    Public Function CFracao(Valor) As String
    'Função para conversão de decimal para fracao
    'Criada por thiagomcosta@yahoo.com.br
    Dim vQtdeCasasDecimais As Integer
    Dim vDiminui As Double
    Dim vNumera As Long
    Dim vDenom As Long
    Dim vConstat As Long
    Dim vSimpl As Long

    'Conta a quantidade de casas decimais
    vDiminui = Valor - Int(Valor)
    vQtdeCasasDecimais = Len(CStr(vDiminui)) - 2
    If vQtdeCasasDecimais <= 0 Then
        CFracao = CStr(Valor)
        Exit Function
    End If

    If vQtdeCasasDecimais > 4 Then vQtdeCasasDecimais = 4

    vConstat = 10 ^ vQtdeCasasDecimais

    'Define os numeradores e denomidores
    vNumera = Int(Valor * vConstat)
    vDenom = Int(vConstat)

    'Simplifica a fração
    vSimpl = 2
    Do While vNumera > 1 And vDenom > 1 And vSimpl <= vDenom And vSimpl <= vNumera
        If vNumera Mod vSimpl = 0 And vDenom Mod vSimpl = 0 Then
            vNumera = vNumera / vSimpl
            vDenom = vDenom / vSimpl
            vSimpl = vSimpl - 1
        End If
        vSimpl = vSimpl + 1
    Loop

    CFracao = vNumera & "/" & vDenom

    End Function
    avatar
    Rosalvo Risso
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 89
    Registrado : 21/05/2015

    Função de conversão de Decimal para Fração Empty Formato Fração

    Mensagem  Rosalvo Risso 1/11/2018, 20:52

    Ok! Muito obrigado pela ajuda! Grande Abraço!

      Data/hora atual: 21/11/2024, 11:27