C # Проверить, имеет ли десятичное число более 3 десятичных знаков? - PullRequest
13 голосов
/ 23 мая 2011

У меня есть ситуация, которую я не могу изменить: одна таблица базы данных (таблица A) принимает 6 десятичных знаков, в то время как связанный столбец в другой таблице (таблица B) имеет только 3 десятичных знака.

Мне нужно скопировать из A в B, но если у A больше 3 знаков после запятой, дополнительные данные будут потеряны. Я не могу изменить определение таблицы, но я могу добавить обходной путь. Поэтому я пытаюсь выяснить, как проверить, имеет ли десятичное число больше 3 десятичных знаков или нет?

например

Table A
Id, Qty,  Unit(=6dp)
1,  1,     0.00025
2,  4000,  0.00025

Table B
Id, TotalQty(=3dp)

Я хочу иметь возможность узнать, имеет ли блок Qty * из таблицы A более 3 десятичных знаков (строка 1 не будет работать, строка 2 пройдет):

if (CountDecimalPlaces(tableA.Qty * tableA.Unit) > 3)
{
    return false;
}
tableB.TotalQty = tableA.Qty * tableA.Unit;

Как мне реализовать функцию CountDecimalPlaces(decimal value) {}?

Ответы [ 12 ]

0 голосов
/ 14 сентября 2012
Public Function getDecimalCount(decWork As Decimal) As Integer

    Dim intDecimalCount As Int32 = 0
    Dim strDecAbs As String = decWork.ToString.Trim("0")

    intDecimalCount = strDecAbs.Substring(strDecAbs.IndexOf(".")).Length -1

    Return intDecimalCount

End Function
0 голосов
/ 23 мая 2011

не могли бы вы преобразовать его в строку и просто выполнить функцию len или это не соответствует вашей ситуации?

следующий вопрос: 300,4 будет хорошо?

...