Şimdi Ara

C# sayı virgülden sonrasını yuvarlama

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
17
Cevap
1
Favori
68.319
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • C# ta bi basit bir program yaptım 3sayıyı toplayıp 3e bölüyo ortalaması çıkıyo ama 55.555557 çıkıyo 55.57 cıkması için hangi kodu kullanmam lazım?



  • Yapay Zekanın Yanıtı

    C# ile Virgülden Sonra 2 Basamak Yuvarlama

    Bir ondalık sayının virgülden sonraki basamaklarını yuvarlamak, birçok programlama dilinde yaygın olarak kullanılan bir görevdir. C# dilinde bunu yapmak için kullanabileceğiniz birkaç yaklaşım vardır.

    double, float ve decimal Veri Türleri için Yuvarlama

    • double ve float veri türleri için Math.Round() yöntemini kullanabilirsiniz. Bu yöntem, bir ondalık sayıyı belirtilen basamak sayısına kadar yuvarlar. Virgülden sonra 2 basamak yuvarlamak için aşağıdaki kodu kullanabilirsiniz:

    csharp double sayi = 123.456; sayi = Math.Round(sayi, 2); // sonucu 123,46 şeklinde verir

    • decimal veri türü için decimal.Round() yöntemini kullanabilirsiniz. Bu yöntem, double ve float veri türlerindeki Math.Round() yöntemine benzer şekilde çalışır.

    Virgülden Sonra Belirli Sayıda Basamak Alma

    Virgülden sonra belirli sayıda basamak almak istiyorsanız ToString() yöntemini kullanabilirsiniz. Bu yöntem, bir ondalık sayıyı istenen biçimde bir dizeye dönüştürür. Virgülden sonra 2 basamak almak için aşağıdaki kodu kullanabilirsiniz:

    csharp double sayi = 123.456; string yuvarlanmisSayi = sayi.ToString("0.00"); // sonucu "123,46" şeklinde verir

    Anahtar Kelimelerin Kullanımı

    Yukarıda verilen anahtar kelimeler, metin boyunca farklı cümleler içinde kullanılmıştır:

    • c# virgülden sonra 2 basamak yazdırma: "double" ve "float" veri türleri için Math.Round() yönteminin nasıl kullanılacağı açıklanırken kullanılmıştır.
    • c# double virgülden sonra 2 basamak: "double" veri türü için Math.Round() yönteminin kullanımıyla ilgili bir örnek verilmiştir.
    • c# float virgülden sonra 2 basamak: "float" veri türü için Math.Round() yönteminin kullanımıyla ilgili bir örnek verilmiştir.
    • c# decimal virgülden sonra 2 basamak: "decimal" veri türü için decimal.Round() yönteminin kullanımıyla ilgili bir örnek verilmiştir.
    • virgülden sonra 2 basamak alma c#: Virgülden sonra 2 basamak almak için ToString() yönteminin nasıl kullanılacağı açıklanırken kullanılmıştır.
    • c# virgülden sonraki basamak sayısı: Virgülden sonraki basamak sayısını belirlemek için ToString() yönteminin nasıl kullanılacağı açıklanırken kullanılmıştır.
    • c# virgülden sonra 2 basamak: Metnin başlığında ve özetinde genel olarak virgülden sonra 2 basamak yuvarlama konusuna atıfta bulunmak için kullanılmıştır.
    Yapay Zekanın Yanıtını Genişlet
  • Math kütüphanesine bir bak. Math.Round olması lazım.
  • arkadaşım sayının mod 1 ini al ,o değeri int e ata ,boş ver kütüphaneyi.
  • Örnek vermek gerekirse

    double x=21.511445871;

    x = Math.Round(x, 2); / virgülden sonra 2 basamak al demek. 2 yi kaç yaparsan o kadar basamak gelir.


    Son durumda x= 21.51 olarak ekranda gelir.



    < Bu mesaj bu kişi tarafından değiştirildi netcore -- 10 Ekim 2011; 11:03:00 >
  • Formatlara bak
  • arkdslar ben daha yeniyim sayı illa 21 olması lzm deil sonuc ne cıkarsa cıksın değişkenli bide Xe ne yazca o lazım bi yardımcı olursanız sevinirm ödev bu
  • Arkadaşım x in ne olduğu önemli değil. Sen en son sonuçu nerede gösteriyorsan oraya sadece x = Math.Round(x, 2); yazacaksın.

    Sonucu sonuc değişkeninde gösteriyorsan ; sonuc = Math.Round(sonuc, 2);

    MessageBox.Show(sonuc.ToString());

    bu kadar

    Sen yazdıgın kodu kopyala buraya onu düzeltip gönderelim



    < Bu mesaj bu kişi tarafından değiştirildi netcore -- 10 Ekim 2011; 18:05:51 >
  • Yapay Zeka’dan İlgili Konular
    excelde metin rakam ayırma
    4 yıl önce açıldı
    Daha Fazla Göster
  • int sayi1 , sayi2 , sayi3 , ort ;
    double________ burayi hatirlamiom
    sayi1 = convert .Toxint32(textbox1.Text);
    sayi2 = convert. Toint32 (textbox2.Text);
    sayi3 = convert. Toint32 (textbox3. Text);
    ort = (sayi1 + sayi2 + sayi3) / 3;
    Textbox4. Text = convert. Tostring (ort);
  • veya en basit yolla
    int x = Convert.ToInt32(y);
  • bunu nasil uyarlicaz
  • int sayi1, sayi2, sayi3;
    double ort;
    sayi1 = Convert.ToInt32(textBox1.Text);
    sayi2 = Convert.ToInt32(textBox2.Text);
    sayi3 = Convert.ToInt32(textBox3.Text);
    ort = sayi1 + sayi2 + sayi3;
    ort = ort / 3;
    ort = Math.Round(ort, 2);
    textBox4.Text = ort.ToString();

    int tam sayıları ifade eder. Ondalıklı sayı kullanacaksan double kullanmalısın.


    VEYA

    int sayi1, sayi2, sayi3;
    double ort;
    sayi1 = Convert.ToInt32(textBox1.Text);
    sayi2 = Convert.ToInt32(textBox2.Text);
    sayi3 = Convert.ToInt32(textBox3.Text);
    ort = Convert.ToDouble(sayi1 + sayi2 + sayi3)/3;
    ort = Math.Round(ort, 2);
    textBox4.Text = ort.ToString();


    VEYA

    int sayi1 = Convert.ToInt32(textBox1.Text);
    int sayi2 = Convert.ToInt32(textBox2.Text);
    int sayi3 = Convert.ToInt32(textBox3.Text);
    double ort = Convert.ToDouble(sayi1 + sayi2 + sayi3) / 3;
    ort = Math.Round(ort, 2);
    textBox4.Text = ort.ToString();


    VEYA en kısa olarak

    double ort = (Convert.ToDouble(textBox1.Text) + Convert.ToDouble(textBox2.Text) +Convert.ToDouble(textBox3.Text))/3;
    textBox4.Text = Math.Round(ort, 2).ToString();


    Bu 4 ünden birini kullanabilirsin (: Hepsi aynı işi görüyor



    < Bu mesaj bu kişi tarafından değiştirildi netcore -- 11 Ekim 2011; 9:47:12 >




  • Mesela 1,893 sayısı nasıl 1,90 olabilir ?

    Veya bir başka örnek vermek gerekirse;

    1,764 -> 1,77 olacak. 1,524 -> 1,53 olacak. 1,326 -> 1,33 olacak.

    Yani virgülden sonra 3 hane olduğunu düşünüp, yukarıya yuvarlayıp virgülden sonra 2 hane elde edicez. Bunu nasıl yapabilirim?
    Yardım !
  • quote:

    Orijinalden alıntı: ALoT_BiTTeR_

    Mesela 1,893 sayısı nasıl 1,90 olabilir ?

    Veya bir başka örnek vermek gerekirse;

    1,764 -> 1,77 olacak. 1,524 -> 1,53 olacak. 1,326 -> 1,33 olacak.

    Yani virgülden sonra 3 hane olduğunu düşünüp, yukarıya yuvarlayıp virgülden sonra 2 hane elde edicez. Bunu nasıl yapabilirim?
    Yardım !

    Math.Round(1,7654748, 2);
    Sana 1,7654748 sayısını, virgülden sonraki iki basamağı ile birlikte verir.
    Eğer Math.Round(1,7654748, 3); demiş olsak, virgülden sonraki 3 basamakla birlikte verirdi.
  • quote:

    Orijinalden alıntı: İrfan

    quote:

    Orijinalden alıntı: ALoT_BiTTeR_

    Mesela 1,893 sayısı nasıl 1,90 olabilir ?

    Veya bir başka örnek vermek gerekirse;

    1,764 -> 1,77 olacak. 1,524 -> 1,53 olacak. 1,326 -> 1,33 olacak.

    Yani virgülden sonra 3 hane olduğunu düşünüp, yukarıya yuvarlayıp virgülden sonra 2 hane elde edicez. Bunu nasıl yapabilirim?
    Yardım !

    Math.Round(1,7654748, 2);
    Sana 1,7654748 sayısını, virgülden sonraki iki basamağı ile birlikte verir.
    Eğer Math.Round(1,7654748, 3); demiş olsak, virgülden sonraki 3 basamakla birlikte verirdi.

    İstediğim o değil. Bana virgülden sonra 3 basamak vermesini istemiyorum. Senin yaptığın direk 3 haneli sayıyı almak.

    Benim istediğim şöyleydi: 1.156 gibi bir sayı var. Yani virgülden sonra 3 haneli bir decimal sayı. Ben bu ve bunun gibi sayıları "hep" yukarıya yuvarlayıp 2 haneli bir sayı elde etmek istiyordum. 1.156 -> 1.16 olmalı. Veya 2.259 -> 2.60 olmalı.
    Çözümünü bir arkadaş söyledi. Buradan paylaşayım;

    (Math.Ceiling(sayi*100)/100); Bu direk istediğim şeyi yapıyor.




  • ALoT_BiTTeR_ kullanıcısına yanıt
    Demek istediğinizi şimdi anladım. Ben matematikten pek anlamam, bu tür işlemleri genelde dönüştürmelerle çözerim.
    C# IDE olmadığı sürece pek yazabildiğim bir değil, o yüzden Java üzerinden yazayım.

    string yaziylaSayi = String.valueOf(1.156);


    sayi = Integer.parseInt( yaziylaSayi.substring(0, yaziylaSayi.indexOf(".") + 1) + (Integer.parseInt(yaziylaSayi.charAt(yazilanSayi.indexOf(".") + 2)) + 1);

    Böyle bir şeyler yapardım muhtemelen.
  • double virgulluSayim = 123.245;
    int virgulluSayiminBuyumusHali = virgulluSayim * 100; //Sıfır sayısı kadar hane kalacak en sonda. (100'de iki sıfır var, iki hane kalacak en son virgülden sonra)
    doulbe ikiHaneliVirgulluSayim = virgulluSayiminBuyumusHali * 100;

    Optimize edilmiş ve genelleştirilmiş Extension:

     

    class DoubleFormatter
    {

    private readonly double _value;



    public DoubleFormatter(double value)
    {
    _value = value;
    }



    private int powOfTen(uint pow)
    {
    var ten = 1;
    for (int i = 0; i < pow; i++)
    {
    ten *= 10;
    }
    return ten;
    }

    public double Digits(uint digits)
    {
    var pot = powOfTen(digits);
    return (int)(_value * pot) / (double)pot;
    }

    }

    static class DoubleExtension
    {

    public static DoubleFormatter With(this double value)
    {
    return new DoubleFormatter(value);
    }

    }


    Niye .With().Digits()? Çünkü bana göre çok tatlı duruyor :)

    Tatlı durmayan hali:
     
    namespace DoubleExtensionExample
    {

    static class DoubleExtension2
    {

    private static int powOfTen(uint pow)
    {
    var ten = 1;
    for (int i = 0; i < pow; i++)
    ten *= 10;
    return ten;
    }

    public static double WithDigits(this double value, uint digits)
    {
    var pot = powOfTen(digits);
    return (int)(value * pot) / (double)pot;
    }

    }

    }


    Kullanım örneği:
     
    var myDouble = 10.56789865;
    Console.WriteLine(myDouble.With().Digits(2));

    var myDouble2 = 10.5834563;
    Console.WriteLine(myDouble2.WithDigits(3));




  • Bu kod istediğini en kısa yoldan yapar.
    var number1 = 55.555557;
    var number2 = 10.5834563;
    Console.WriteLine(number1+" >> " +String.Format("{0:0.00}",number1));
    Console.WriteLine(number2 + " >> " + String.Format("{0:0.000}", number2));
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.