There are three factors to consider. The first is the WinBatch will only use 10 digits of precision when converting from a floating point number to a string. This does not affect the value of the floating point number contained in a floating point variable. I should have read your original post a little more carefully and mentioned this.

The second factor is floating point precision. Double precision floating point numbers only have 52 bit for the mantissa which limits the precision and 11 bits for the exponent which limit magnitude. This arrangement is specified by the IEEE-754 standard. A 20 significant digit number cannot be represented at full precision.

The third factor is how Excel and COM represent floating point numbers. I am not an Excel expert but Excel certainly takes advantage of multiple internal representations of numbers. Also COM has 3 ways to represent floating point numbers - R4, R8, and DECIMAL. Consider the following:

Num = 1234567890.0123456789

fltNum = ObjectType('R4', Num )

dblNum = ObjectType('R8', Num )

decNum = ObjectType('decimal', Num)

strText = 'R4: ':fltNum:@CRLF:'R8: ':dblNum:@CRLF:'DECIMAL: ':decNum:@CRLF

fltNum = ObjectType('R4', '1234567890.0123456789')

dblNum = ObjectType('R8', '1234567890.0123456789')

decNum = ObjectType('decimal', '1234567890.0123456789')

strText := 'R4: ':fltNum:@CRLF:'R8: ':dblNum:@CRLF:'DECIMAL: ':decNum

Message('Variant Numbers ':Num, strText)

Best advice is to figure out how Excel is storing your floating point and maybe getting it to return floats as DECIMAL variants.

Perhaps someone with more Excel experience can suggest a better solution.