Accueil > > > CONVERTION D'UN NOMBRE EN UNE FRACTION
CONVERTION D'UN NOMBRE EN UNE FRACTION
Information sur la source
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
Sources de la même categorie
Commentaires et avis
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
|
Derniers Blogs
OFFICE 365 - SHAREPOINT ONLINE, QUELQUES LIMITATIONSOFFICE 365 - SHAREPOINT ONLINE, QUELQUES LIMITATIONS par junarnoalg
De nombreuses entreprises font le choix de SharePoint Online, service fourni au travers de l'offre de Microsoft Office 365. S'il est vrai que ce choix apporte un grand nombre d'avantages; rapidité de mise en œuvre, disponibilité, large couvertu...
Cliquez pour lire la suite de l'article par junarnoalg PRéSENTATION DES API REST DE WINDOWS AZURE : LISTER LES COMPTES DE STORAGEPRéSENTATION DES API REST DE WINDOWS AZURE : LISTER LES COMPTES DE STORAGE par richardc
http://www.c2idotnet.com/articles/presentation-des-api-rest-de-windows-azure-lister-les-comptes-de-storage
Désolé pour "toto", mais c2i existait avant blogs.developpeur.org et c'est mon site "officiel" ;-) ...
Cliquez pour lire la suite de l'article par richardc [HTML5] SLIDES ET DéMOS : AUTOUR DU W3C , NOUVEAUX STANDARDS ET WEB MOBILE (LILLE)[HTML5] SLIDES ET DéMOS : AUTOUR DU W3C , NOUVEAUX STANDARDS ET WEB MOBILE (LILLE) par Gio
Très bonne après-midi passée lors cette conférence avec le W3C, organisée par L' Inria sur les nouveaux standards, ce Mardi 14 Février, on sent vraiment que çà bosse au W3C, et l'avenir est très très prometteur pour le HTML5, notamment ...
Cliquez pour lire la suite de l'article par Gio GESTION D'EXCEPTION AVEC LES TASKSGESTION D'EXCEPTION AVEC LES TASKS par richardc
Nous avons vu dans un précédent article comment utiliser Task pour effectuer des opérations dans un autre thread.
Malheureusement, comme tout le monde n'est pas parfait, il se peut que cette exécution se passe mal et qu'une exception se produise.
La...
Cliquez pour lire la suite de l'article par richardc
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|