Если вы действительно имеете в виду то, что пишете (MAX 2 десятичных знака) и не означают ВСЕГДА 2 десятичных знака, тогда два фрагмента кода в комментариях не дадут вам того, о чем вы просили (они вернут строку, которая ВСЕГДА имеет две десятичные цифры, т. е. ONE возвращается как «1,00» (или «1,00» для формата в зависимости от вашей десятичной точки).
Если вы действительно хотите опцию с MAX 2 десятичных цифр, вам придется выполнить небольшую постобработку возвращаемой строки.
FUNCTION FloatToStrMaxDecimals(F : Extended ; MaxDecimals : BYTE) : STRING;
BEGIN
Result:=Format('%.'+IntToStr(MaxDecimals)+'f',[F]);
WHILE Result[LENGTH(Result)]='0' DO DELETE(Result,LENGTH(Result),1);
IF Result[LENGTH(Result)] IN ['.',','] THEN DELETE(Result,LENGTH(Result),1)
END;
Альтернативная (и, возможно, более быстрая) реализация может быть:
FUNCTION FloatToStrMaxDecimals(F : Extended ; MaxDecimals : BYTE) : STRING;
BEGIN
Result:=Format('%.'+IntToStr(MaxDecimals)+'f',[F]);
WHILE Result[LENGTH(Result)]='0' DO SetLength(Result,PRED(LENGTH(Result)));
IF Result[LENGTH(Result)] IN ['.',','] THEN SetLength(Result,PRED(LENGTH(Result)))
END;
Эта функция будет возвращать число с плавающей запятой с MAX числом указанных десятичных цифр, т.е. одна половина с цифрами MAX 2 вернет «0.5», а треть с десятичными цифрами MAX 2 вернет «0.33», а две трети с десятичными цифрами MAX 2 вернет «0.67». ДЕСЯТЬ с МАКС. 2 десятичных знака вернет "10".
Последний оператор IF должен действительно проверять правильную десятичную точку, но я не думаю, что возможны какие-либо значения, кроме точки или запятой, и если одно из них останется последним символом в строке после удаления всех нули с конца, тогда он ДОЛЖЕН быть десятичной точкой.
Также обратите внимание, что этот код предполагает, что строки индексируются с 1 для первого символа, как это всегда происходит в Delphi 7. Если вам нужен этот код для мобильных компиляторов в новых версиях Delphi, вам необходимо обновить код. Я оставлю это упражнение читателю: -).