|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Округление через SimpleRoundTo
Привет, товарищи! Столкнулся с проблемой при округлении денег!
В общем-то, все просто summa:=SimpleRoundTo(n,-2); Все бы хорошо, НО! Если n=14.402, например, то на выходе получим 14.4. Что для математики правильно, а вот для валюты есть разница: 4 цента или 40 центов)) Не подскажите, как решить такую проблемку? Спасибо всем, кто неравнодушен!! |
#2
|
||||
|
||||
Код:
uses math; ... summa:= RoundTo(14.402, -1); // = 14.40 ... Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#3
|
|||
|
|||
а вот и нет(( по прежнему 14.4
|
#4
|
|||
|
|||
может быть есть какая-то опция, которой указывается обрезать ноль в дробной части или нет?
|
#5
|
||||
|
||||
Цитата:
Если так, то используй функцию SetRoundMode. Пример: Код:
procedure TForm1.Button1Click(Sender: TObject); begin SetRoundMode(rmUp); ShowMessage(FloatToStr(RoundTo(14.402, -2))); end; |
#6
|
||||
|
||||
Цитата:
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
Этот пользователь сказал Спасибо angvelem за это полезное сообщение: | ||
delphi_begin (21.05.2013)
|
#7
|
|||
|
|||
нет. Округляется все правильно!
Мне просто нужно, чтобы ноль на конце не обрезался. Т.е. 14.402 до двух знаков =14.40 - это правильно! Но функция выдает 14.4. Что тоже верно, но не для денег! Как заставить не убирать ноль на конце, что возвращалось 14.40 ?? Потому что в центах 14.4 и 14.40 - две разные суммы |
#8
|
|||
|
|||
Это понятно. Но мне нужно именно в виде 14.40. Потому что я не знаю какая сумма будет округляться. 14.351 или 14.402
|
#9
|
||||
|
||||
Цитата:
|
#10
|
||||
|
||||
Воспользуйтесь функцией FloatToStrF.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#11
|
|||
|
|||
Цитата:
Можете привести пример? |
#12
|
||||
|
||||
Цитата:
Код:
ShowMessage(Format('%.2f', [14.402])); |
#13
|
|||
|
|||
Цитата:
Спасибо большое за помощь! |