• 07-10-2019, 16:48:01
    #1
    Merhaba C# ile gelen değeri %1 düşürmek istiyorum fakat işlem sonucunda 569324,25 şeklinde sonuç çıkıyor çıkan sonuçta virgülü nasıl ilk rakamın önüne kaydırabilirim?

    Amacım 5.75075 değerinden %1 düşürmek

    Kullandığım Kod
     double fiyat, kdv, toplam;
    fiyat = Convert.ToDouble(satisDeger.Text);
    kdv = fiyat * 1 / 100;
    toplam = fiyat - kdv;
    KullaniciBilgisi.deneme= toplam.ToString();
                MessageBox.Show(KullaniciBilgisi.deneme);
  • 07-10-2019, 16:49:46
    #2
    Üyeliği durduruldu
    bool ile deneyiniz
  • 07-10-2019, 16:53:19
    #3
    Math.Round(Toplam_Tutar, 3) // virgülden sonra 3 basamak Math kütüphanesi ile yapabilirsiniz hocam.
  • 07-10-2019, 17:01:01
    #4
    SpyBey adlı üyeden alıntı: mesajı görüntüle
    Math.Round(Toplam_Tutar, 3) // virgülden sonra 3 basamak Math kütüphanesi ile yapabilirsiniz hocam.
    Error 4 Cannot implicitly convert type 'double' to 'string' Hatası alıyorum
  • 07-10-2019, 19:08:40
    #5
    meltar95 adlı üyeden alıntı: mesajı görüntüle
    Merhaba C# ile gelen değeri %1 düşürmek istiyorum fakat işlem sonucunda 569324,25 şeklinde sonuç çıkıyor çıkan sonuçta virgülü nasıl ilk rakamın önüne kaydırabilirim?

    Amacım 5.75075 değerinden %1 düşürmek

    Kullandığım Kod
     double fiyat, kdv, toplam;
    fiyat = Convert.ToDouble(satisDeger.Text);
    kdv = fiyat * 1 / 100;
    toplam = fiyat - kdv;
    KullaniciBilgisi.deneme= toplam.ToString();
    MessageBox.Show(KullaniciBilgisi.deneme);

    // using System.Globalization;  eklenecek
    
    double fiyat, kdv, toplam;
            fiyat = Double.Parse(satisDeger.Text.Replace(",","."), NumberStyles.Currency, CultureInfo.InvariantCulture);
            kdv = fiyat * 1 / 100;
    toplam = fiyat - kdv;
    KullaniciBilgisi.deneme= toplam.ToString();
    MessageBox.Show(KullaniciBilgisi.deneme);
    Böyle dener misin hocam?
  • 07-10-2019, 19:46:49
    #6
    Virgülün sağda olmasının nedeni CultureInfo'nun tr-TR olmasıdır. .NET dilleri Convert yaparken CultureInfo'yu kullanır. Bu yüzden InvariantCulture ile dilden/ülkeden bağımsız format uygularsanız düzelir. Şu şekilde istediğiniz sonucu alabilirsiniz
    double yuzde = 1d;
    string satisDeger = "5.75075";
    double fiyat, kdv, toplam;
    
    fiyat = Convert.ToDouble(satisDeger, System.Globalization.CultureInfo.InvariantCulture);
    kdv = fiyat * yuzde / 100d;
    toplam = fiyat - kdv;
    
    Console.WriteLine($"TUTAR : {fiyat}");
    Console.WriteLine($"İNDİRİM : {yuzde} %");
    Console.WriteLine($"KDV : {kdv}");
    Console.WriteLine($"TOPLAM : {toplam}");
    ÇIKTI :
    TUTAR : 5,75075
    İNDİRİM : 1 %
    KDV : 0,0575075
    TOPLAM : 5,6932425
  • 08-10-2019, 10:46:51
    #7
    pr1d3 adlı üyeden alıntı: mesajı görüntüle
    // using System.Globalization;  eklenecek
    
    double fiyat, kdv, toplam;
            fiyat = Double.Parse(satisDeger.Text.Replace(",","."), NumberStyles.Currency, CultureInfo.InvariantCulture);
            kdv = fiyat * 1 / 100;
    toplam = fiyat - kdv;
    KullaniciBilgisi.deneme= toplam.ToString();
    MessageBox.Show(KullaniciBilgisi.deneme);
    Böyle dener misin hocam?
    Hocam çok teşekkür ederim şuan tek takıldığım nokta basamak sayısını düşürme
  • 08-10-2019, 12:05:37
    #8
    meltar95 adlı üyeden alıntı: mesajı görüntüle
    Hocam çok teşekkür ederim şuan tek takıldığım nokta basamak sayısını düşürme
    KullaniciBilgisi.deneme= toplam.ToString("F2") // F den sonra yazacağınız sayı ile "." dan sonra kaç basamak gösterileceğini ayarlayabilirsiniz.