Простое решение для полного пути:
import sys
sys.path.insert(0,'C:\\Users\\user01\\Desktop\\pipeline')
from folder1.folder2.filename import function_name
это импортирует функцию "function_name" из: C:\Users\user01\Desktop\pipeline\folder1\folder2\filename
Мне это совсем не кажется странным.
Decimal.Parse ()
предполагается для выдачи исключения для неверных форматов. Decimal.TryParse ()
не вызовет это исключение, а просто вернет false. Проблема в том, что вы не проверяете возвращаемое значение из Decimal.TryParse ()
. Я дам вам хорошие шансы, что Decimal.TryParse ()
вернет false для каждого ввода, вызывающего исключение с Decimal.Parse ()
, и истинно везде в остальном. И когда Decimal.TryParse ()
возвращает false, выходной аргумент всегда равен «0».
Единственное возможное предупреждение - это локализация. Если Decimal.Parse ()
жалуется на кажущийся нормальный ввод, вы можете проверить, используется ли в числовом формате (текущая культура), используемом на вашем сервере, запятую, а не десятичную дробь, чтобы отделить коэффициент от мантиссы. Но, учитывая, что ваш тест "4.0" работал нормально, я сомневаюсь, что это проблема.
Наконец, при выполнении этого преобразования из средства чтения данных вы должны учитывать тип исходного столбца средства чтения данных. Если уже может быть десятичным числом. Зачем преобразовывать его в строку только для того, чтобы преобразовать обратно?
Вы говорите следующее:
// this works absolutly fine?!
decimal _rating = 0;
decimal.TryParse(DataReader["Rating"].ToString(), out _rating);
Но вы фактически не проверяли возвращаемое значение TryParse. Я предполагаю, что ваш TryParse на самом деле дает сбой (возвращает false), поскольку decimal.Parse и decimal.TryParse используют одни и те же «правила» для синтаксического анализа, учитывая используемые вами перегрузки.
Я подозреваю, что ни один из них не работает так, как вы считать. Оба, вероятно, не работают, но TryParse не сработает.
Измените свой TryParse на это и попробуйте еще раз:
if (!decimal.TryParse(DataReader["Rating"].ToString(), out _rating))
{
throw new Exception("Input string was not in a correct format");
}
Держу пари, это бросает ...