Округление

отредактировано 04:28 Раздел: FastReport 2.xx VCL
Как округлить цифру с точностью до неск. знаков после запятой,

пишу: [Round([QOwnSserv."B"])] - округляет все

[Round([QOwnSserv."B"]),2] - не округляет


Заранее спасибо, Павел

Комментарии

  • отредактировано 04:28
    Если тебе нужно именно округление а не форматирование, то один из вариантов приблизительно такой (не самый лучший и возможно не самый оптимальный)

    если нужно округлить с точностью до 2 знака после запятой, то
    Round("твое число" * 100)/100
  • отредактировано April 2004
    2 Grey:

    Некоторые дополнения: цифры с плавающей запятой вообще штука интересная.
    Некоторые весчи (например 1.005) лежат вот в несколько изменённом виде (например 1.00499999999999).
    Ну и ессно после ROUND мы получим немного не то что хотели (получим 1.00 вместо 1.01)
    Для борьбы с этим "злом" рекомендую делать следующее:
    1. Поправить сразу FR_Pars:
    function TfrParser.CalcOPZ(const s: String): Variant;
    ...
          ttRound:
          begin
            v := nm[st - 1];
            if  v > 0 then
              v := v + 1e-10 else
              v := v - 1e-10;
    
            v := Round(v);
            nm[st - 1] := v;
          end;
    

    2. Прибавлять 1e-10 в самом FRF. Но этот вариант должен также учитывать ещё и отрицательные значения, что честно говоря выглядит ещё хуже:
    [IF(Value>0,ROUND((Value+0.0000000001)*100)/100,ROUND((Value-0.0000000001)*100)/100)]
    
  • отредактировано 04:28
    2 Vano
    Насчет правки - это ты конечно же прав.
    написал:
    [IF(Value>0,ROUND((Value+0.0000000001)*100)/100,ROUND((Value-0.0000000001)*100)/100)]
    Такое подойдет только если округлять нужно с точностью до 2 знаков, а если кто захочет с другой точностью, до 1 знака, до 7 знаков, как тогда быть, не править же каждому функцию под себя, идеальным думаю было бы написание новой функции что нить типа Round(Value, Dig), где Value - округляемо число, Dig - точность.
    Что думаешь?

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.