Задача десятичного округления - PullRequest
0 голосов
/ 16 сентября 2011

У меня есть текстовое поле, которое ограничено десятичным вводом, но таблица sql имеет ограничение на столбец, который является десятичным (18,2).Таким образом, ошибка в том, что люди могут вводить более 18 цифр + столько же, сколько цифр после десятичной дроби, но если я все еще буду делать

 Math.Round(decimal,intDigits);

, то цифры до десятичной дроби превысят 18 и приведут к ошибке,Поэтому вопрос заключается в том, как округлить десятичную дробь с этими ограничениями. Десятичная (18,2).

Ответы [ 3 ]

3 голосов
/ 16 сентября 2011

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

2 голосов
/ 16 сентября 2011

Для типа данных SQL Decimal(p,q), p указывает общую точность (количество десятичных цифр), а q указывает масштаб (числоцифры справа от десятичной точки).В вашем случае (decimal(18,2)) у вас есть 18 десятичных цифр, крайние правые 2 из которых находятся справа от десятичной точки.

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

  • использовать регулярное выражение для проверки.Регулярное выражение ^-?\d{1,16}(\.\d{1,2})?$ поможет.Опустите опциональный знак минус, если вы не хотите, чтобы они могли вводить отрицательные числа.

  • вы можете проверить соответствие по диапазону: преобразовать в Decimal, а затем проверить, неоно находится в допустимом диапазоне значений.

1 голос
/ 16 сентября 2011

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

int myDecimalInt = myDecimal * (10 * intDigits); 

Это даст вам конкретное целое число со всеми числами после точки, усеченной с желаемой точностью: intDigits.

Или вы можете попытаться обработать это на стороне пользовательского интерфейса: не позволяйте пользователю вводить больше цифр, чем вы можете поддерживать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...