2015-02-01 5 views
-3

Я получил эту формулу,Нужна помощь, чтобы преобразовать формулу в C#

R/Rs = (5800/9500) (2,512 3,37) 1/2 = 1,76

Как превратить это в C# так, чтобы значение равно 1,76. Не понимаете, что вы делаете с 2 и 1/2?

Формула составляет от http://skyserver.sdss.org/dr5/en/proj/advanced/hr/radius1.asp

+5

Вы пробовали что-нибудь? –

+0

R_Rs = Math.Pow ((double) 5800/9500, 2.0) * Math.Pow (Math.Pow (2.512, 3.37), 0.5); –

+0

Почему вы хотите превратить это уравнение в C#? Просто возьмите калькулятор и посмотрите, '' (5800/9500)^2 * (2.5123.37)^(1/2) 'равно' 1.76' или нет. Если вы хотите написать программу, и вы должны в конечном итоге использовать «1.76», просто используйте это число как константу литерала: 'const double rDividedByRs = 1.76;'. – stakx

ответ

3

Вы ищете Math.Pow

Math.Pow(5800d/9500d, 2)*Math.Pow(Math.Pow(2.512, 3.37),0.5); 

И использование 5800d/9500d важно здесь (форсирует дважды, один из двойки должен делать), как в противном случае не будет делать целочисленное деление, оставив вас с 0^2 и в целом большим 0 ...

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

1

Его

double i = 5800.0/9500; 
i = Math.Pow(i, 2); 

double x = Math.Pow(2.512, 3.37); 
x = Math.Sqrt(x); 

x = x * i; 

x = Math.Round(x, 2); 

enter image description here

ИЛИ

Math.Round(Math.Pow(5800.0/9500, 2) * Math.Sqrt(Math.Pow(2.512, 3.37)), 2) 

Хитрость здесь в самой первой строке. Если вы разделите 5800 на 9500, он будет возвращать ноль, поскольку деление произойдет в целых числах. Таким образом, чтобы сделать фактическое разделение приводит к фракциям одним из значений, должны быть преобразованы в десятичной, которые я сделал, преобразуя 5800 до 5800.0

2

Вы можете сделать:

double res = Math.Pow(5800/9500d, 2) * Math.Sqrt(Math.Pow(2.512, 3.37)); 
Console.WriteLine(res.ToString("0.00")); 

выход:

1.76 

Working demo

Мощность 0.5 - это квадратный корень.