20 Ocak 2019 Pazar

Math Sınıfı

Cos metodu
Şöyle yaparız.
Double x = Math.Cos (...);
Pow metodu
Double döner.
Örnek
Şöyle yaparız.
Double x = Math.Pow (10.0, -2)
Örnek
Şöyle yaparız.
var pow = (int)Math.Pow(10, 10);
PI Alanı
Şöyle yaparız.
Math.PI
Round metodu - sayı
double veya decimal parametre alır. float parametre almaz. Yuvarlama sonucu Platform = Any CPU veya Platform = x64 olmasına göre değişebilir. Any CPU için açıklama şöyle.
The default setting, "Any CPU", means that the assembly will run natively on the CPU it is currently running on. Meaning, it will run as 64-bit on a 64-bit machine and 32-bit on a 32-bit machine. If the assembly is called from a 64-bit application, it will perform as a 64-bit assembly and so on.
Örnek
Şöyle yaparız.
double d = -2.6114289999999998;
double d1 = Math.Round(d, 7);
double d2 = Math.Round(d, 5);
double d3 = Math.Round(d, 6);
Platform = Any CPU ile çıktı olarak şunu alırız
s7: -2.611429   
s5: -2.61143    
s6: -2.611429   
Platform = x64 ile çıktı olarak şunu alırız
s7: -2.6114289999999998 
s5: -2.61143    
s6: -2.6114289999999998
Açıklaması şöyle. Varsayılan yöntem ToEven yöntemi
If the fractional component of a is halfway between two integers, one of which is even and the other odd, then the even number is returned
Örnek
Şöyle yaparız
Console.WriteLine(Math.Round(98.5)); //98
Console.WriteLine(Math.Round(97.5)); //98

Round metodu - sayı + MidpointRounding
Örnek
Şöyle yaparız. Çıktı olarak drst: 31.2 alırız.
double dd = 31.15;

var drst = Math.Round(dd, 1, MidpointRounding.AwayFromZero);
Örnek
En yakın çift sayıya yuvarlamak için şöyle yaparız. Elimizdeki sayı 3 olsun, yarısı 1.5 eder ancak yukaru yuvarlayınca 2 eder. Bunu 2 ile çarpınca 4 elde ederiz.
double source = 1123.0;

// 1124.0
double result = Math.Round(source / 2, MidpointRounding.AwayFromZero) * 2;
Round metodu - sayı + küsurat hanesi 
En yakın sayıya yuvarlar.

Örnek
En yakın noktalı sayıya yuvarlamak için şöyle yaparız.
public static class FloatExtension
{
  public static decimal RoundFirstSignificantDigit(this decimal input)
  {
     int precision = 0;
     var val = input;
     while (Math.Abs(val) < 1)
    {
      val *= 10;
      precision++;
    }
    return Math.Round(input, precision);
  }
}
Kullanmak için şöyle yaparız.
decimal input = 0.00001;
input.RoundFirstSignificantDigit();
Çıktı olarak şunu alırız.
0.001 -> 0.001
0.00367 -> 0.004
0.00337 -> 0.003
0.000000564 -> 0.0000006
0.00000432907543029 ->  0.000004
Truncate metodu
double değeri long değere cast etmekden iyidir.
Örnek
Şöyle yaparız.
double RoundToNearestEven(double value) =>
    Math.Truncate(value) + Math.Truncate(value) % 2;
Sin metodu
Şöyle yaparız.
Double x = Math.Sin (...);
Bu metodlar radyan değer aldıkları için derece ile kullanabilmek için şöyle yaparız.
public static class Helper
{
  public static double Sin(double degrees) => Math.Sin(degrees * Math.PI / 180.0);
  public static double Cos(double degrees) => Math.Cos(degrees * Math.PI / 180.0);
  public static double Tan(double degrees) => Math.Tan(degrees * Math.PI / 180.0);
}

Hiç yorum yok:

Yorum Gönder