bonjour
je voudrais séparer par une fonction (que je n'ai pas trouvée) la valeur décimale de la valeur entiere d'in nombre réel double
ex 1.42
avoir
x= 1
y = 42
Merci
bonjour
je voudrais séparer par une fonction (que je n'ai pas trouvée) la valeur décimale de la valeur entiere d'in nombre réel double
ex 1.42
avoir
x= 1
y = 42
Merci
Int retourne la partie entière. La partie décimale est égale au nombre moins sa partie entière, on a donc facilement :
Ceci dit, pour que cela fonctionne aussi avec N négatif, il faut utiliser la fonction Fix à la place de Int. En effet, Int(-2.9) retourne 3 alors que Fix(-2.9) retourne 2.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Dim N As Double N = 2.322001 MsgBox N - Int(N)
Ce qui donne donc :Envoyé par L'aide
Abs permet de retourner un résultat toujours positif
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Dim N As Double N = -2.9 MsgBox Abs(N - Fix(N))
tujours fidèle au poste !!!!
merci beaucoup
je vérifie avec ma fonction case et je te tiens au courant
merci encore
precision jsuqu'au bout ..... pas de valeur négative pour moi mais merci pour tous les autres qui piochent dans ce forum
j'ai posé ma fonction dans mon module .... ca fonctionne pas semble t-il
est un probleme avec mon interval ???
Public Function hsuparrondi(hsup As Double)
' fonction d'arrondi pour les mn tous les 15mn sue l'échelle de 100 soit 0.25 0.50 0.75
Dim hsupentier As Integer ' valeur de l'unité
Dim valdec As Integer ' valeur de la décimale arrondie
hsupentier = Int(hsup)
hsupdecimal = hsup - Int(hsup)
Select Case hsupdecimal
Case "0.1" To "0.25"
valdec = 0
Case "0.26" To "0.49"
valdec = 0.25
Case "0.50" To "0.74"
valdec = 0.5
Case "0.75" To "0.99"
valdec = 0.75
End Select
hsuparrondi = valdec + hsupentier
End Function
Oublie pas les balises de code
Le problème vient effectivement du Select case
Ce qui revient en une ligne à :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Public Function hsuparrondi(hsup As Double) ' fonction d'arrondi pour les mn tous les 15mn sue l'échelle de 100 soit 0.25 0.50 0.75 Dim hsupentier As Integer ' valeur de l'unité Dim valdec As Integer ' valeur de la décimale arrondie Dim hsupdecimal As Double hsupentier = Int(hsup) hsupdecimal = hsup - Int(hsup) hsuparrondi = hsupentier + ((hsupdecimal * 100 \ 25)) * 0.25 End Function
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Public Function hsuparrondi(hsup As Double) hsuparrondi = Int(hsup) + ((hsup - Int(hsup)) * 100 \ 25) * 0.25 End Function
gloups .... pour les balises
comment est ce que la fonction fait pour arrondir selon les valeurs que j'avais mis dans les CASE
epux tu m'expliquer à quel niveau tu considères la valeur de l'arrondi
dans le codemerci
Code : Sélectionner tout - Visualiser dans une fenêtre à part ((hsup - Int(hsup)) * 100 \ 25) * 0.25
je viens de tester sur une valeur 0.40 et il me donne 0.25 au lieu de 0.50(demi heure sur une base de 100)
j'ai revérifié le script et j'ai la meme erreur l'arrondi ne se fait pas dans les bonnes tranches, dois je revenir à une fonction case???
merci
Si je te cite :Envoyé par EE
Mon arrondi est donc tout à fait correct à tes espérancesCase "0.26" To "0.49"
valdec = 0.25
Si toutefois, tu veux arrondir au supérieur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part hsuparrondi = Int(hsup) + ((hsup - Int(hsup)) * 100 \ 25 + 1) * 0.25
bonjour
il y a même encore plus simple
ce qui arrondi tout les .25
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 round(monNombre/.25,0)*.25
A condition de disposer de la fonction RoundEnvoyé par Alexandre Sahli
merci à tous je vais tester
Mille excuses pour Tofalu ...t u as raison concernant mes valeurs de case
je vais tester avec une autre valeur ... gloups
ou encore encoure polus simple...
Tu prend ton nombre en string et tu fais un split:
2.45
-2.69
2.0
6.3
x=split(nombre,".")(0) = partie entière
y=split(nombre,".")(1) = partie décimale
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager