Ambos resulatdos son correctos: el 5 está a la mitad entre un número y otro de manera que la decisión de a cuál de ellos redondear es totalmente arbitraria. Lo que si es que en estos momentos desconozco el porqué en un caso se toma una decisión y en el otro otra. Posiblemente tiene que ver con la forma en que Delphi interpreta el parámetro cuando lo pasas directamente. Por ejemplo, si en lugar de usar un Double utilizas un Single verás que redondea hacia arriba.
Para solucionar esto usa la funcion SetRoundMode de la unidad math.pas:
SetRoundMode(rmUp);
// Saludos
|