Приветствую добрых людей из интернета:)
У меня есть строковое значение "1,5", которое после Convert.ToDecimal () заканчивается как 1,5M при просмотре в отладчике.Пока все хорошо, я думаю.Десятичное значение затем передается вызову хранимой процедуры внутри набора данных.Тип интересующего меня параметра определяется как NUMBER (7,2) в БД, поэтому он должен учитывать числа, которые имеют цифры после десятичного разделителя.
Проблема в том, что где-то вдоль строки десятичное значение теряетсяего разделитель и соединяет точность с масштабом, образуя совершенно новый номер, как указано в заголовке этого поста.Я даже пытался установить Precision and Scale внутри коллекции параметров в вызове хранимой процедуры, чтобы она соответствовала DB (7,2), но это тоже не помогло.
Есть ли у вас какие-либо идеи о том, что может происходить здесь??
РЕДАКТИРОВАНИЕ:
Вот код, который вызывает хранимый процесс:
CaseFactory.UtilsAdapter.SetCaseAction(DefId, action, doneBy, assignedTo, comment, status,
searchStatus, priority, access, relStatus, relStatusFixKit, totalhrs,
out Common.RETURN_CODE, out Common.RETURN_TEXT);
=> SetCaseAction просто вызывает хранимый процесс в БДиспользуя механику DataSet.«totalhrs» - это параметр, который меня интересует, в данном случае - десятичное число 1,5M.Я также проверил NLS_NUMERIC_CHARACTERS в Oracle, и они установлены в ','
Так что он использует запятую для десятичных дробей и пробел для тысяч.Ничего необычного я не вижу там.Единственной странной вещью может быть то, что «1,5» заканчивается как «1.5M» с точкой внутри после ToDecimal (), что может быть неправильно интерпретировано.Однако это кажется маловероятным, поскольку региональные настройки на моем сервере также используют ',' в качестве десятичного разделителя, если .NET не использует некоторые другие настройки?Действительно смущен.