Десятичная точность - PullRequest
       1

Десятичная точность

1 голос
/ 07 декабря 2011

В форме у меня есть 2 поля, одно из которых является десятичным #, а другое - суммой (действительное число).

Десятичное число # - это Enum со значениями от 1 до 5, и значением по умолчанию будет 5.

Требования:

1) Всякий раз, когда выбрано значение для поля Decimal # (1-5), в зависимости от выбранного значения

В поле Сумма нельзя указывать десятичное число.

Ex1: если десятичное число # = 2

      Amount    = 1.24

Пример 2: если десятичное число # = 3

      Amount    = 1.521

Пример 1: Если десятичное число # = 4

      Amount    = 3.0124

Пример 1: если десятичное число = 5

      Amount    = 8.02145

Решение: Я написал модифицированный метод на уровне управления Decimal #, поэтому в зависимости от значения, выбранного для Decimal #, будет разрешено столько десятичных знаков для поля Amount. Теперь все работает нормально.

Но, как показано в приведенных выше примерах, поле «Сумма» всех записей в сетке изменяется в соответствии с десятичным числом # в последней введенной строке.

Значит, первая строка: если Decimal # = 2, то Amount = 1.02

Вторая строка: если десятичное число = 3, то сумма = 4,623

Но в этот раз первая строка также принимает ограничение как 3, хотя десятичное число # = 2.

Пожалуйста, направьте меня в этом отношении.

1 Ответ

0 голосов
/ 07 декабря 2011

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

Изменение текущей записи может повлиять на другие записи, отображаемые в сетке.

Длягрупповое управление количеством десятичных знаков легко настраивается следующим образом:

 amountCtrl.noOfDecimals(trans.decimalNo);

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

edit DecimalStr amountStr(boolean set = false, DecimalStr _amountStr = '')
{
    if (set)
    {
        this.Amount = str2num(_amountStr);
    }
    return num2str(this.Amount, 0, this.decimalNo, 1, 0)
}

Расширенный тип данных DecimalStr должен быть выровнен по правому краю.

К сожалению str2num принимает только точку в качестве десятичной точки и не принимаетпринимать тысячи разделителей, так что это не «удобная» функция для преобразования чисел.Возможно, вам придется сделать это самостоятельно, чтобы учесть региональные настройки.

...