seules les valeurs arrondies inférieures à 0,5 dans VBS

0

J'ai besoin d'aide sur mon script VBS.

J'utilise ceci pour afficher tous les 10% un statut:

Max = 300
everyPercent = 10
for x = 1 to Max 
    if x mod Max / 100 * everyPercent = 0 then
        msgbox round((x / Max ) * 100) & "% done" & vbcr & vbcr & "Status: " & x  & "/" & Max 
    end if
next

Fonctionne très bien si la valeur maximale est supérieure à 5. Sur 5, le script se bloque, car modconvertit les 2 nombres avec intet round. Donc, 0.4 passe à 0 et une division d' modéchecs.

Existe-t-il un moyen facile (dans la même ligne) de toujours corriger, mais rien en dessous de 1?

dans VB.net je voudrais utiliser ceci:

if x mod (iif((Max / 100 * everyPercent) < 1, 1, Max / 100 * everyPercent) = 0 then
Joe6pack
la source

Réponses:

0

Je suis confus quant à la raison pour laquelle cela doit être dans une seule ligne et un simple

If Max / 100 * everyPercent < 1 Then
  temp = 1
Else
  temp = Max / 100 * everyPercent
If x mod temp = 0 Then
...

Cela ne suffit pas, mais si vous êtes un tel fan de inline, pourquoi ne pas le créer vous-même?

Function IIf(condition, value_if_true, value_if_false)
    If condition Then
        IIf = value_if_true
    Else 
        IIf = value_if_false
    End If
End Function

Si vous créez une fonction comme celle-là, vous pouvez l'utiliser exactement comme vous le feriez avec un fichier iif.

Syberdoor
la source