C# klavyeden girilen ondalık sayıyı yuvarlamak

juka

Hectopat
Katılım
23 Mart 2017
Mesajlar
21
Daha fazla  
Cinsiyet
Erkek
Profil Kapağı
1522267462
C# ile klavyeden girilen ondalık sayının son hanesi >= 5 ise yukarıya, <5 ise aşağıya nasıl yuvarlayabilirim?

Örnek:
Giriş: 10.333337
Çıktı: 10.333340

Giriş: 10.333333
Çıktı: 10.333330
 
Son düzenleyen: Moderatör:
Aşağıdaki kodları kullanarak hallettim.

C#:
namespace ConsoleApplication17
{
    class Program
    {
        static void Main(string[] args)
        {
            string a, q;
            int x, y;
            string s1, s2, s3, s4;
            int g1;
            q = Console.ReadLine();
            x = q.Length;
            a = q.Substring(x - 1);
            y = Convert.ToInt32(a);
            s1 = q;
            s2 = s1.Remove(x - 2);
            s3 = s1.Substring(x - 2);
            s4 = s3.Remove(1);
            g1 = Convert.ToInt32(s4);
            if (y < 5)
            {
                Console.WriteLine(q.Remove(x - 1) + "0");
            }
            else
            {
                Console.WriteLine(s2 + (g1 + 1) + "0");
            }
            Console.ReadKey();
        }
    }
}
 
Aşağıdaki kodları kullanarak hallettim.

C#:
namespace ConsoleApplication17
{
    class Program
    {
        static void Main(string[] args)
        {
            string a, q;
            int x, y;
            string s1, s2, s3, s4;
            int g1;
            q = Console.ReadLine();
            x = q.Length;
            a = q.Substring(x - 1);
            y = Convert.ToInt32(a);
            s1 = q;
            s2 = s1.Remove(x - 2);
            s3 = s1.Substring(x - 2);
            s4 = s3.Remove(1);
            g1 = Convert.ToInt32(s4);
            if (y < 5)
            {
                Console.WriteLine(q.Remove(x - 1) + "0");
            }
            else
            {
                Console.WriteLine(s2 + (g1 + 1) + "0");
            }
            Console.ReadKey();
        }
    }
}

Bu kodu sakla bir yerlere. 3-5 sene sonra yazilimci olur da donup bakarsan sana iyi gelir.
 
Aşağıdaki kodları kullanarak hallettim.

C#:
namespace ConsoleApplication17
{
    class Program
    {
        static void Main(string[] args)
        {
            string a, q;
            int x, y;
            string s1, s2, s3, s4;
            int g1;
            q = Console.ReadLine();
            x = q.Length;
            a = q.Substring(x - 1);
            y = Convert.ToInt32(a);
            s1 = q;
            s2 = s1.Remove(x - 2);
            s3 = s1.Substring(x - 2);
            s4 = s3.Remove(1);
            g1 = Convert.ToInt32(s4);
            if (y < 5)
            {
                Console.WriteLine(q.Remove(x - 1) + "0");
            }
            else
            {
                Console.WriteLine(s2 + (g1 + 1) + "0");
            }
            Console.ReadKey();
        }
    }
}

Sanırım sırf rakam yuvarlayacağım diye Math.Round kullanmak yerine yazılan en gereksiz kodlardan birisini görüyorum.

Dostum neden böyle bir gereksinim ihtiyaç duydun ? Tek satır da halledebileceğin bir iş için satırlarca kod yazmanın ne anlamı var ?

Elinle kulağını tersten tutuyorsun, başka hiçbir şey değil :)
 
Sayıyı String'e çevirip Ali Cengiz oyunları çevirmişsiniz.
Bellekte 1 bitin bile değerli olduğunun bilincinde kod yazmanızı tavsiye ederim.
Stringler sandığınızın aksine "immutable" yapıdadırlar. Yani değiştirilemezler siz içindeki 1 char'ı bile silseniz tüm String baştan oluşturulur.
//
Yapmanız gereken tek şey
C#:
Math.Round();
Kullanmak.


İllaki bir şeylerle uğraşmak boş yere satır yazmak istiyorum diyorsan da.
virgünden sonraki rakam: 5 ve 5 den büyük ise Ceil() değil ise Floor() yapabilirsiniz.
 
Son düzenleme:
Uyarı! Bu konu 6 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Technopat Haberler

Yeni konular

Geri
Yukarı