VBScript中的Now()精度

VBScript中的Now()精度,vbscript,time,precision,Vbscript,Time,Precision,VBScript中的Now()在被称为CDbl(Now())时,以10000000秒的精度返回时间。在尝试使用它来编写now的更精确的实现时,我发现在VBScript中,尽管非常精确,但由于时间每秒只更新一次,所以它不是非常精确。这可以通过观察以下内容的输出来证明: i = 0 While i < 50 gnow = Cdbl(now) result = (gnow - Int(gnow)) WScript.Echo CDate(gnow) WScript

VBScript中的Now()在被称为CDbl(Now())时,以10000000秒的精度返回时间。在尝试使用它来编写now的更精确的实现时,我发现在VBScript中,尽管非常精确,但由于时间每秒只更新一次,所以它不是非常精确。这可以通过观察以下内容的输出来证明:

i = 0
While i < 50
    gnow = Cdbl(now) 
    result = (gnow - Int(gnow))
    WScript.Echo CDate(gnow)
    WScript.Echo "Iteration " & i & ": " & result
    WScript.Sleep(100)
    i = i + 1
Wend
i=0
当我<50
gnow=Cdbl(现在)
结果=(gnow-Int(gnow))
Echo CDate(gnow)
Echo“迭代”&i&“:”&result
WScript.Sleep(100)
i=i+1
温德

我现在要回答的问题是,给定一个运行不到一秒钟的VBScript调用now(),now()将返回什么时间?是脚本解释器启动的时间、调用Now()的时间还是其他时间?

看起来将是调用“Now()”方法的时间,精确到第二秒。这仍然是一个正常的方法调用。

David:我特别想做的是超过1秒的准确度。这个函数的精度很明显,但我需要更好地理解Now()返回的数字是如何确定的。您可以看到double数据类型的精度与“Now()”函数的精度不匹配。请看一下“Timer”函数。看起来它给出了亚秒级的分辨率。