Я должен сказать, что последний раз, когда я использовал Паскаля, был близок к 25 годам ранее. Но я вытащил Free Pascal из любопытства и попробовал это:
fValueMax
Мои первые две Maxкоманды показывают тот же результат, о котором вы сообщали о просмотре. Я подозревал, что, возможно, fValueвозвращал ценность с меньшей точностью, которую 0вы ожидали вернуться, поэтому я создал doubleи присвоил ей тот же самый литерал, который вы назначили fValue, и, конечно же, его значение выглядит очень близко к тому, что вы возвращаетесь в fValueMax,
Таким образом , в конце концов, вместо того , чтобы вызывать Maxс fValueи буквальным 0, я назвал его с двумя переменными типа 0.0, один из которых я установил в fValue2. В этом случае вы можете видеть, что input ( fValueMax2) и output ( Max) имеют точно такое же значение. Поэтому, хотя я не знаю точно, какие правила Pascal предназначены для определения перегрузки для вызова, мне интересно, был ли ваш первоначальный вызов Maxкаким-то образом разрешающим версию, которая принимает два singleзначения и возвращает то же самое.
Хотя вы можете быть в курсе этого, я чувствую себя вынужденным бросить в обычное предостережение о том, как типы с плавающей точкой, например, singleи doubleне всегда смогут точно представлять значения, которые вы им хотите. Вот хороший обзор.