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

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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.