Цитата:
Сообщение от
Владимир Максимов
С целыми числами будет ошибка. StrFmt() в этом случае не создает дробной части. Получается лишнее деление на 100.
Это да. Про целые я уже сделал оговорку выше:
Цитата:
Сообщение от
Gustav
Если исходное число целое, то его можно по ходу без напряжения превратить в real, сложив с 0. или умножив на 1. (точки важны!) или разделить на 1 (можно без точки):
X++:
int a = 1000000;
strFmt('%1', a + 0.) // или
strFmt('%1', a * 1.) // или
strFmt('%1', a / 1 ) // хоть по теории это и самый долгий вариант,
// зато без точки :)
но вроде круг ограничивается real'ами, т.к. упоминается семейство отчетов RLedgerSheet*:
Цитата:
Сообщение от
valentino
Речь идет о семействе отчетов RLedgerSheet* которые отображают формочку с ListView, а в нем отображаются цифры преобразованные в строки.
Т.е. real'ные ДЕНЬГИ! ДЕНЬГИ!
P.S.
Ну, впрочем, можно и допилить слегка, правда, в этом случае появляется зависимость еще и от исходного числа, а не только от промежуточной строки (бррр! бред какой-то!

):
X++:
b = str2Num(
strFmt ( '%1e-%2',
strKeep( strNumberAfterStrFmt, '-0123456789'),
typeOf(a) == Types::Real ? 2 : 0
));