2010-08-16 2 views
1

J'essaie d'arrondir un certain nombre de dire le plus proche 15, 20, 30. à savoirComment arrondir au nombre le plus proche de X - pour VBScript pseudocode

726 au 30 700 est le plus proche

714 au 15 le plus proche est 700 etc

Le code de VBScript serait très utile mais le pseudocode serait également une aide énorme! Désolé, j'ai oublié de dire que 726 est vraiment un temps exprimé en int, c'est-à-dire 07:26. Donc ce devrait être 07:00, pas 690

EDIT Encore: Je suis juste en train d'extraire la minute et d'utiliser le code avec lequel les gens ont répondu. Espérons que cela aidera quelqu'un d'autre aussi. Merci!

Merci

+0

Je pense que vous voulez dire 726 (arrondi) au 30 le plus proche est 720 et 714 (arrondi à l'inférieur) au plus proche 15 est 705. –

+0

Comment cela s'applique-t-il à C#? –

+0

Oui j'ai oublié de mentionner que c'est vraiment temps, s'il vous plaît voir la question. Vraiment désolé, mon erreur –

Répondre

3

Code Pseudo:

diff = num mod nearest 
return num - diff 

donc 726 mod 30 = 6

726 - 6 = 720

vbscript:

Function GetNearest(num, nearest) 
    Dim diff = num mod nearest 
    GetNearest = num - diff 
End Function 
+0

je pensais que modulo est un reste, c'est 726 mod 30 = 6 :) – akonsu

+0

@akonsu - tout à fait correct. C'est aussi ce que j'ai écrit. – Oded

+0

Merci Oded, votre réponse était parfaite, juste ma question n'était pas. –

1

Vous avez énuméré un bouquet de langua ges dans vos tags. Je vais avec C#, mais un algorithme plus générique:

int n = 726; 
int q = 30; 
int r = Math.Floor(n/q) * q; 
+0

Math.Floor (n/q) est le même que n/q si toutes les variables sont des entiers. – akonsu

+1

@akonsu: Vrai, mais pas nécessairement dans toutes les langues. Je pensais rendre le sol plus explicite pour les langages de script où les types peuvent être embrouillés. – Toby

+0

Merci, j'apprécie que ce soit le même que d'utiliser MOD –

1

une autre façon de le faire est juste d'utiliser la division entière: 726/30 * 30 = 720

Questions connexes