![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#16
|
|||
|
|||
![]() Цитата:
Если человеку надо два знака после запятой, то и сравнивать надо не с 1E-9, а с 1E-2 или, на худой конец с 1E-3 |
#17
|
||||
|
||||
![]() Цитата:
Пишу программы за еду. __________________ |
#18
|
||||
|
||||
![]() а я хочу чтобы переменной "с" присваивался наиболее правильный результат...
![]() |
#19
|
||||
|
||||
![]() А что, с точки зрения вещественных чисел в компьютере, более правильный результат?
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#20
|
||||
|
||||
![]() По видимому тот, что соответствует строковому представлению числа.
|
#21
|
||||
|
||||
![]() Тогда вам сюда, там в разделе Дельфи имеется большой топик с обсуждениями на эту тему и внятно обьясняется почему Вашим желаниям не суждено сбыться и как это обойти.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#22
|
||||
|
||||
![]() Вы бы есчо ссылку на Google дали...
![]() Последний раз редактировалось SpectraL, 15.08.2011 в 15:49. |
#23
|
||||
|
||||
![]() Цитата:
P.S. Можно и в Google поискать. Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#24
|
||||
|
||||
![]() Да, поисчите пожалуйста...
Последний раз редактировалось SpectraL, 16.08.2011 в 10:07. |
#25
|
||||
|
||||
![]() Ребят, а что вы тут за дискуссию развернули???
Код:
procedure TForm1.Button1Click(Sender: TObject); var a, b, c: Double; begin a:=212.53; b:=212.49; c:=a-b; c := round(c * 100 + 0.5) / 100; showmessage(floattostr(c)); end; Google в помощь |
#26
|
||||
|
||||
![]() Цитата:
Код:
procedure TForm1.Button2Click(Sender: TObject); var a, b, c: Double; begin a:=212.053; b:=212.049; c:=a-b; c := round(c * 100 + 0.5) / 100; showmessage(floattostr(c)); end; ![]() Пишу программы за еду. __________________ |
#27
|
||||
|
||||
![]() Достаточно вместо 100 подставить переменную, и вычислять максимальное количество знаков после запятой (у "a" и "b"). Циклом довести данную переменную до нужной цифры. Т.е. если после запятой одна цифра, то будет 10, если две - 100, три - 1000 и т.д.
Google в помощь |
#28
|
||||
|
||||
![]() Ildar-tsr:
function IntPower(const Base: Extended; const Exponent: Integer): Extended; Код:
unit Math; function RoundTo(const AValue: Double; const ADigit: TRoundToRange): Double; var LFactor: Double; begin LFactor := IntPower(10, ADigit); Result := Round(AValue / LFactor) * LFactor; end; function SimpleRoundTo(const AValue: Double; const ADigit: TRoundToRange = -2): Double; var LFactor: Double; begin LFactor := IntPower(10, ADigit); Result := Trunc((AValue / LFactor) + 0.5) * LFactor; end; -- Код:
uses UMathServices, Memo1.Lines.Add(ulSub('212.53', '212.49')); Memo1.Lines.Add(ulSub('212.053', '212.049')); Memo1.Lines.Add(ulSub('212.4556565', '212.343676676')); Пишу программы за еду. __________________ |