在 VBS 中,只将 0.5 以下的值向上舍入

在 VBS 中,只将 0.5 以下的值向上舍入

我需要一些有关 VBS 脚本的帮助。

我使用它来显示每 10% 的状态:

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

如果最大值大于 5,则效果很好。当值为 5 时,脚本崩溃,因为mod用 和 四舍五入转换 2 个数字int。因此 0.4 变为 0,并且除法mod失败。

有没有一种简单的方法(在同一行)可以始终正确舍入,但不低于 1。

在 VB.net 中我将使用这个:

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

答案1

我很困惑为什么这必须是一行和一个简单的

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

这还不够,但是如果你是内联的粉丝,为什么不自己创建它呢?

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

如果您创建这样的函数,您可以像使用 iif 一样使用它。

相关内容