Bug: Visual Basic Scripting
I was developing a source code repository with revision tracking system in VBS for a client.
In this repository each revision would be incremented by 0.01 on each commit to the repository.
Kind of like CVS but much, much simpler.
So it turned out to be quite simple (the source is in my Scripts Library) but I found some strange activity in VBS when it comes to floating point math.
VBS has a function to convert a signed decimal string to a number so that you can perform mathematical functions on it. “CSng(string)” is the function.
So once you’ve converted a number from a string, then add 0.01 it should effectively add 0.01 to the last number.
So, lets consider this code:
Version=CSng("0.01") WScript.Echo Version Version=Version+0.01 WScript.Echo Version
What would you assume the ouput would be? 0.02 right?
WRONG! VBS outputs “1.99999997764826E-02”.
VBS Can’t Do Math!