Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CONVERTION D'UN NOMBRE EN UNE FRACTION


Information sur la source

Catégorie :Maths Classé sous : conversion, nombre, fraction Niveau : Débutant Date de création : 23/08/2000 Vu : 4 888

Note :
5 / 10 - par 3 personnes
5,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (0)
Ajouter un commentaire et/ou une note

Description

Convertion d'un nombre en une fraction.
Exemple:  10,25  donne 10 1/4


 

Source

  • '***********************************************************************************************************
  • ' Name : xNum2Frac
  • ' Purpose : Converts a decimal number to a fraction.
  • ' eg: xNum2Frac(1.25) return 1 1/4
  • ' Syntax : xNum2Frac(Number)
  • ' Parameters : Number : Number to convert
  • ' Return : Number as a fraction
  • '***********************************************************************************************************
  • Public Function xNum2Frac(Number As Double) As String
  • Dim strIntValue As String
  • Dim strDecValue As String
  • Dim strNumerator As String
  • Dim strDenominator As String
  • Dim strDecSep As String
  • Dim lngDecPosition As Long
  • On Error GoTo FracErr
  • ' Retrieve the system decimal separator
  • strDecSep = Mid(0.1, 2, 1)
  • strIntValue = CStr(Number)
  • lngDecPosition = InStr(1, strIntValue, strDecSep)
  • If lngDecPosition Then
  • strDecValue = Right(strIntValue, Len(strIntValue) - lngDecPosition)
  • strIntValue = Left(strIntValue, lngDecPosition - 1)
  • lngDecPosition = xGCF(CLng("1" & String(Len(strDecValue), "0")), CLng(strDecValue))
  • strNumerator = CLng(strDecValue) / lngDecPosition
  • strDenominator = CLng("1" & String(Len(strDecValue), "0")) / lngDecPosition
  • xNum2Frac = IIf(strIntValue = "0", "", strIntValue) & " " & strNumerator & "/" & strDenominator
  • Else
  • xNum2Frac = strIntValue
  • End If
  • Exit Function
  • FracErr:
  • Err.Raise 6, , "An error occured."
  • End Function
  • '***********************************************************************************************************
  • ' Name : xGCF
  • ' Purpose : Returns the Greatest Common Factor
  • ' i.e. The largest number which will evenly divide into both X and Y
  • ' Syntax : xGCF(Number1, Number2)
  • ' Parameters : Number1 : 1st number
  • ' Number2 : 2nd number
  • ' Return : The Greatest Common Factor
  • '***********************************************************************************************************
  • Public Function xGCF(ByVal Number1 As Long, ByVal Number2 As Long) As Long
  • Dim lngTemp As Long
  • Number1 = Abs(Number1) 'Make both numbers positive
  • Number2 = Abs(Number2)
  • lngTemp = Number1 Mod Number2
  • Do While lngTemp > 0
  • Number1 = Number2
  • Number2 = lngTemp
  • lngTemp = Number1 Mod Number2
  • Loop
  • xGCF = Number2
  • End Function
'***********************************************************************************************************
' Name       : xNum2Frac
' Purpose    : Converts a decimal number to a fraction.
'              eg: xNum2Frac(1.25) return 1 1/4
' Syntax     : xNum2Frac(Number)
' Parameters : Number   : Number to convert
' Return     : Number as a fraction
'***********************************************************************************************************
Public Function xNum2Frac(Number As Double) As String
    Dim strIntValue     As String
    Dim strDecValue     As String
    Dim strNumerator    As String
    Dim strDenominator  As String
    Dim strDecSep       As String
    Dim lngDecPosition  As Long
    
    On Error GoTo FracErr
    
    ' Retrieve the system decimal separator
    strDecSep = Mid(0.1, 2, 1)
    
    strIntValue = CStr(Number)
    lngDecPosition = InStr(1, strIntValue, strDecSep)
    
    If lngDecPosition Then
        strDecValue = Right(strIntValue, Len(strIntValue) - lngDecPosition)
        strIntValue = Left(strIntValue, lngDecPosition - 1)
        lngDecPosition = xGCF(CLng("1" & String(Len(strDecValue), "0")), CLng(strDecValue))
        strNumerator = CLng(strDecValue) / lngDecPosition
        strDenominator = CLng("1" & String(Len(strDecValue), "0")) / lngDecPosition
        xNum2Frac = IIf(strIntValue = "0", "", strIntValue) & " " & strNumerator & "/" & strDenominator
    Else
        xNum2Frac = strIntValue
    End If
    Exit Function

FracErr:
    Err.Raise 6, , "An error occured."
End Function


'***********************************************************************************************************
' Name       : xGCF
' Purpose    : Returns the Greatest Common Factor
'              i.e. The largest number which will evenly divide into both X and Y
' Syntax     : xGCF(Number1, Number2)
' Parameters : Number1  : 1st number
'              Number2  : 2nd number
' Return     : The Greatest Common Factor
'***********************************************************************************************************
Public Function xGCF(ByVal Number1 As Long, ByVal Number2 As Long) As Long
    Dim lngTemp As Long
    
    Number1 = Abs(Number1) 'Make both numbers positive
    Number2 = Abs(Number2)
    lngTemp = Number1 Mod Number2
    
    Do While lngTemp > 0
        Number1 = Number2
        Number2 = lngTemp
        lngTemp = Number1 Mod Number2
    Loop
    
    xGCF = Number2
End Function
 

Conclusion

La fonction xNum2Frac se charge de faire la convertion.
Elle utilise la fonction xGCF (egalement dans les sources) pour trouver le plus grand denominateur commun.
 

Commentaires et avis

Aucun commentaire pour le moment.

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

conversion qbasic en VB6 [ par Jeanlouis ] Bonjour,J'aimerai savoir comment convertir ce programme qbasic en vb6?ClsPrint " choisir le programme de conversion qui vous convient"Print " ----- Conversion une variable string contenant une fraction en valeur numérique [ par ylesage ] Je rencontre le problème suivant : Je récupère dans un fichier "tranche.Txt" des données comportant du texte bien sûr mais aussi des fractions.Ex:Tran Conversion chaine de caracteres en un nombre entier [ par tntdavid ] Je voudrais connaitre le code VB d'une fonction qui me permettrait de convertir une chaine de 6 caractères en un nombre entier.Merci d'avance de l'att Conversion d'un nombre entier en une chaine de caractère [ par Janot ] Ben, je n'arrive pas à trouver la fonction qui convertit un nombre entier en une chaine de caractères (je connaîs seulement Val qui fait l'inverse).Me CONVERSION EN NOMBRE D'ANNEES [ par clara2ci ] Bonjour,Je souhaite obtenir l'age d'une personnes :j'ai un champ date du jour et un champ date de naissance.Sur accès j'ai mis dans le source controle Nombre Décimal vers Fraction [ par kiboumz ] Bonjour, J'aimerais savoir s'il y aurais une façon simple de convertir en vb.net un nombre décimal vers sa plus petite fraction, Par exemple au lieu d Nombre Décimal vers Fraction [ par kiboumz ] Bonjour, J'aimerais savoir s'il y aurais une façon simple de convertir en vb.net un nombre décimal vers sa plus petite fraction, Par exemple au lieu d conversion chaine de caractére en nombre [ par michto ] Ceci n'est pas une question ( c'est une astuce mais je ne savais pas ou la mettre...c'est pas un code !!). Pour convertir une chaine en nombre, plusie conversion chaine de caractére en nombre [ par michto ] Ceci n'est pas une question ( c'est une astuce mais je ne savais pas ou la mettre...c'est pas un code !!). Pour convertir une chaine en nombre, plusi Conversion format de nombre [ par Iliona67 ] Bonjour, Encore novice en matière de VB, je bloque sur une chose :Sur certaine feuilles, j'ai des éléments TextBox et Label qui font di


Nos sponsors

Sondage...

CalendriCode

Septembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
2930     

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,36 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.