Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Программа и интерфейс
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #16  
Старый 14.02.2010, 21:07
Аватар для syber
syber syber вне форума
Прохожий
 
Регистрация: 14.02.2010
Сообщения: 13
Репутация: 10
По умолчанию

Цитата:
Сообщение от s0Creator
Так проблема решена или покопаться в архивах?
Кстати как на счет типа Currency ?

На счёт типа Currency - хороший совет. Но он не прокатит, после запятой у меня максимум 6 знаков, а Currency дает только 4.
Цена, к примеру: 2,325 умножается на количество топлива 1,356 (будь они не ладны эти миллилитры)
Да, с вариантом 0,49999999 округление у меня получается правильное (арифметическое), а если учитывать, что у вещественного числа у меня может быть максимум 6 знаков после запятой, то вполне устраивает.

Спасибо за беспокойство, не утруждайте себя поиском. Всё прекрасно работает, просто я хотел найти более эстетичный вариант.

P/s теперь понимаю, почему бытовые процессоры не ставят на военную технику.
Ответить с цитированием
  #17  
Старый 14.02.2010, 21:16
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,906
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Если бы мне действительно понадобилась точность до 6 знаков после запятой я бы написал пару функций и работал с целыми числами.
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #18  
Старый 14.02.2010, 21:20
Аватар для syber
syber syber вне форума
Прохожий
 
Регистрация: 14.02.2010
Сообщения: 13
Репутация: 10
По умолчанию

Цитата:
Сообщение от Aristarh Dark
Если бы мне действительно понадобилась точность до 6 знаков после запятой я бы написал пару функций и работал с целыми числами.

Тоже возникала идея работать с двумя частями вещественного числа как с целыми числами, но пара функций уже не одна
Ответить с цитированием
  #19  
Старый 14.02.2010, 21:35
Аватар для syber
syber syber вне форума
Прохожий
 
Регистрация: 14.02.2010
Сообщения: 13
Репутация: 10
По умолчанию

Чьорт, в некоторых случаях и множество девяток не помогает

Если кто может помочь, буду благодарен
Ответить с цитированием
  #20  
Старый 14.02.2010, 21:59
Аватар для syber
syber syber вне форума
Прохожий
 
Регистрация: 14.02.2010
Сообщения: 13
Репутация: 10
По умолчанию

Наконец-то нашёл правильную функцию арифметического округления

Код:
function SimpleRoundTo(const AValue: Extended; const ADigit: TRoundToRange = -2): Extended;
var
  LFactor: Extended;
begin
  LFactor := IntPower(10, ADigit);
  if AValue < 0 then
    Result := Trunc((AValue / LFactor) - 0.5) * LFactor
  else
    Result := Trunc((AValue / LFactor) + 0.5) * LFactor;
end;

Округляет всё правильно. Нужно подключить модуль Math для её работы.
Спасибо всем за помощь.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 02:58.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter