Доброго времени.
currtostrf(80.00,fffixed,2) формирует строку "80,00", что вполне логично...
currtostrf(79.998,fffixed,2) формирует строку "080,00" вместо "80,00", что не логично... (на мой взгляд)
никто не сталкивался?
currtostrf. не совсем понятный результат.
Модератор: Модераторы
Может как то связано с тем что она для денежных единиц? Именно она нужна, RoundTo не подойдет?
Sharfik писал(а):currtostrf(79.998,fffixed,2) формирует строку "080,00" вместо "80,00", что не логично... (на мой взгляд)
Логично ли задавать тысячные доли денежных единиц?
Попробуйте
Код: Выделить всё
currtostrf(79.99,fffixed,2)Sharfik писал(а):Может как то связано с тем что она для денежных единиц?
Именно так. Речь идет о финансовых вычислениях.
svk12 писал(а):Логично ли задавать тысячные доли
Опять-же именно так, поскольку тип currency рассчитан на 4, насколько я помню, знака после запятой, и число 79,998 является результатом финансовых вычислений в формате именно 79,998, хотя я и привел упрощенный пример, для упрощения сути вопроса. Так-же при использовании типа currency 79,99=79,99, а 79,998=80, применительно к данному примеру и исходя из использования специфики типа currency.
Но меня интересовал именно непонятный 0 в начале строки, а не применение других форматов, поскольку это всего-лишь преобразование в строку и при любых вариантах вывода должно быть 80, а не 080. Каким образом количество знаков знаков дробной части повлияло на этот-самый 080. именно в этом я и хочу разобраться.
Есть одна теория. Мне несколько раз кадровик наш говорила, чтобы я перед датой ставил нолик, если она в первых 9-ти числах. Это связано с подделкой документов. Ноль в начале не позволяет подрисовать что то, но тогда встает вопрос почему в первом варианте у тебя нет нуля. ..Зауши притянутое объяснение)))
На Turbo Delphi Explorer результат одинаковый - 80.00
В CT 5.10 результат предсказуем оба 80,00.
