Вы можете иметь точность, но это зависит от того, что еще вы хотите сделать. Если вы добавили в консольное приложение следующее:
double a = 1e-20;
Console.WriteLine(" a = {0}", a);
Console.WriteLine("1+a = {0}", 1+a);
decimal b = 1e-20M;
Console.WriteLine(" b = {0}", b);
Console.WriteLine("1+b = {0}", 1+b);
Вы получите
a = 1E-20
1+a = 1
b = 0,00000000000000000001
1+b = 1,00000000000000000001
Но учтите, что функция Pow
, как и почти все в классе Math, принимает только двойные значения:
double Pow(double x, double y);
Таким образом, вы не можете взять синус десятичной дроби (кроме как путем преобразования его в двойную)
Также см. этот вопрос .