currtostrf. не совсем понятный результат.

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

currtostrf. не совсем понятный результат.

Сообщение Deimos » 27.10.2014 18:02:56

Доброго времени.

currtostrf(80.00,fffixed,2) формирует строку "80,00", что вполне логично...
currtostrf(79.998,fffixed,2) формирует строку "080,00" вместо "80,00", что не логично... (на мой взгляд)


никто не сталкивался?
Deimos
постоялец
 
Сообщения: 174
Зарегистрирован: 17.01.2010 00:31:30

Re: currtostrf. не совсем понятный результат.

Сообщение Sharfik » 27.10.2014 19:30:13

Может как то связано с тем что она для денежных единиц? Именно она нужна, RoundTo не подойдет?
Аватара пользователя
Sharfik
энтузиаст
 
Сообщения: 809
Зарегистрирован: 20.07.2013 01:04:30

Re: currtostrf. не совсем понятный результат.

Сообщение svk12 » 27.10.2014 23:55:31

Sharfik писал(а):currtostrf(79.998,fffixed,2) формирует строку "080,00" вместо "80,00", что не логично... (на мой взгляд)


Логично ли задавать тысячные доли денежных единиц?
Попробуйте
Код: Выделить всё
currtostrf(79.99,fffixed,2)
svk12
постоялец
 
Сообщения: 409
Зарегистрирован: 09.06.2008 18:42:47

Re: currtostrf. не совсем понятный результат.

Сообщение Deimos » 28.10.2014 00:51:20

Sharfik писал(а):Может как то связано с тем что она для денежных единиц?


Именно так. Речь идет о финансовых вычислениях.


svk12 писал(а):Логично ли задавать тысячные доли


Опять-же именно так, поскольку тип currency рассчитан на 4, насколько я помню, знака после запятой, и число 79,998 является результатом финансовых вычислений в формате именно 79,998, хотя я и привел упрощенный пример, для упрощения сути вопроса. Так-же при использовании типа currency 79,99=79,99, а 79,998=80, применительно к данному примеру и исходя из использования специфики типа currency.


Но меня интересовал именно непонятный 0 в начале строки, а не применение других форматов, поскольку это всего-лишь преобразование в строку и при любых вариантах вывода должно быть 80, а не 080. Каким образом количество знаков знаков дробной части повлияло на этот-самый 080. именно в этом я и хочу разобраться.
Deimos
постоялец
 
Сообщения: 174
Зарегистрирован: 17.01.2010 00:31:30

Re: currtostrf. не совсем понятный результат.

Сообщение Sharfik » 28.10.2014 02:13:26

Есть одна теория. Мне несколько раз кадровик наш говорила, чтобы я перед датой ставил нолик, если она в первых 9-ти числах. Это связано с подделкой документов. Ноль в начале не позволяет подрисовать что то, но тогда встает вопрос почему в первом варианте у тебя нет нуля. ..Зауши притянутое объяснение)))
Аватара пользователя
Sharfik
энтузиаст
 
Сообщения: 809
Зарегистрирован: 20.07.2013 01:04:30

Re: currtostrf. не совсем понятный результат.

Сообщение GAMER » 28.10.2014 11:54:34

Думаю баг, который сохраняет количество символов, но при этом закругляет.
Аватара пользователя
GAMER
энтузиаст
 
Сообщения: 627
Зарегистрирован: 06.08.2008 13:41:07
Откуда: Ужгород-Днепр, Украина

Re: currtostrf. не совсем понятный результат.

Сообщение Sharfik » 29.10.2014 02:15:35

На Turbo Delphi Explorer результат одинаковый - 80.00
Аватара пользователя
Sharfik
энтузиаст
 
Сообщения: 809
Зарегистрирован: 20.07.2013 01:04:30

Re: currtostrf. не совсем понятный результат.

Сообщение ZeUsM » 13.11.2014 03:22:55

В CT 5.10 результат предсказуем оба 80,00.
Аватара пользователя
ZeUsM
новенький
 
Сообщения: 57
Зарегистрирован: 08.11.2010 13:55:35
Откуда: Нерезиновая


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 247

Рейтинг@Mail.ru
cron