That multiplication returns a different product under Eval(), but I don't understand why.
Debug.Print (.575 * 100) < 57.5
True
Debug.Print Eval("(.575 * 100) = 57.5")
-1
In the first case, the product is less than 57.5, so Round() will round it down to 57.
In the second case, the product is equal to 57.5, so Round() will apply its standard "round to even" approach to yield 58.
Edit: You all are right that Eval() coerces the literal value to a different data type.
? TypeName(.575)
Double
? Eval("TypeName(.575)")
Decimal
? Round(CDec(.575) * 100)
58
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…