begin process at 2012 02 16 20:01:07
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths

 > CONVERTION D'UN NOMBRE EN UNE FRACTION

CONVERTION D'UN NOMBRE EN UNE FRACTION


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Maths Classé sous :conversion, nombre, fraction Niveau :Débutant Date de création :23/08/2000 Vu :13 651

Auteur : Mr X

Ecrire un message privé
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.


 Sources du même auteur

Source avec Zip TESTER SI UN LECTEUR (RESEAU OU NON) EST ACCESSIBLE ET/OU EX...
DETERMINE LE NOMBRE DE JOURS DANS UN MOIS
SAVOIR SI UNE FENETRE EST CHARGEE
FAIRE UNE PAUSE D'UN CERTAIN NOMBRE DE SECONDES
SAVOIR SI UN NOMBRE EST PAIR OU IMPAIR

 Sources de la même categorie

Source avec Zip Source avec une capture CONVERTISSEUR HEXAVIGÉSIMAL par shaeks
Source avec Zip Source avec une capture Source .NET (Dotnet) CRYPTOGRAPHIE AFFINE par Tigrou66
Source avec Zip Source avec une capture SCANNER FLEX par lajouad
Source avec Zip EQUATIONSECONDDEGRÉ,MATH,DEGRÉ par shadkitenge
Source avec Zip Source .NET (Dotnet) SOMME DE CHIFFRES CONTENUE DANS UN NOMBRE par alpha5

 Sources en rapport avec celle ci

Source avec Zip TRANSFORMER UN NOMBRES EN LETTRES (TRÈS OPTIMISER) par ouiss
Source avec Zip ECRIRE DES NOMBRES EN TOUTES LETTRES (MULTI-LANGUAGE) par santiago69
Source avec Zip Source avec une capture TRADUCTEUR VB6.VBP EN VB5.VBP par joro
CHIFFRE EN LETTRE FONCTION par ElDoktor
CONVERSION D'UN NOMBRE EN LETTRES par gipp

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

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,432 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales