C# liczby po przecinku


(Chi Mei ) #1
using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;


namespace ConsoleApplication1

{

    class Program

    {

        static void Main(string[] args)

        {

            double x;

            x = double.Parse(Console.ReadLine(), System.Globalization.CultureInfo.InvariantCulture);


            double promien = Math.Sqrt(x);

            double pole = Math.PI * x * x;

            double obwod = Math.PI * 2 * x;


            Console.WriteLine("promien: {0} pole: {1} obwod: {2}",x, Math.PI*x*x,Math.PI*2*x, 

                promien.ToString("F3", System.Globalization.CultureInfo.InvariantCulture),

                pole.ToString("F3", System.Globalization.CultureInfo.InvariantCulture),

            obwod.ToString("F3", System.Globalization.CultureInfo.InvariantCulture));










        }

    }

}

raz mi wyskakuje pelno liczb po przecinku, a raz nic a wedlug formuly "F3" powinny zawsze byc 3 liczby po przecinku,

nie wiem co mam jeszcze nie tak, prosze o pomoc


(Tomek Matz) #2
using System;

using System.Globalization;


namespace ConsoleApplication2

{

    class Program

    {

        static void Main(string[] args)

        {

            double promien = double.Parse(Console.ReadLine(), CultureInfo.InvariantCulture);

            double pole = Math.PI * promien * promien;

            double obwod = Math.PI * 2 * promien;


            Console.WriteLine("promien: {0} pole: {1} obwod: {2}",

                promien.ToString("F3", System.Globalization.CultureInfo.InvariantCulture),

                pole.ToString("F3", System.Globalization.CultureInfo.InvariantCulture),

                obwod.ToString("F3", System.Globalization.CultureInfo.InvariantCulture)

                );

        }

    }

}

(Chi Mei ) #3

dziekuje bardzo, ja nie moglam tego ogarnac


(Tomek Matz) #4

Błąd był w użyciu metody Console.WriteLine. Porównaj to co miałaś w wywołaniu tej metody z tym co ja napisałem.


(Chi Mei ) #5

zauwazylam, ja dopiero zaczynam sie uczyc C# i czesto zdarza mi sie jeszcze takie bledy robic, jeszcze raz dzieki za pomoc


(Somekindsoftware) #6

Można też wyświetlać tak, moim zdaniem znacznie czytelniej:

Console.WriteLine("promien: {0:F3} pole: {1:F3} obwod: {2:F3}", promien, pole, obwod);

Pytanie zasadnicze, po co używasz InvariantCulture?


(Tomek Matz) #7

Pozwolę sobie odpowiedzieć na to pytanie za autorkę tematu :slight_smile: Precyzując ustawienia regionalne definiujesz jaki ma być zawsze wyświetlany znak dziesiętny i znak dla liczb ujemnych. Więcej na ten temat możesz poczytać tutaj http://msdn.microsoft.com/en-us/library/dwhawy9k.aspx.


(Somekindsoftware) #8

Ja mam doczytać MSDN w tej kwestii? No bez jaj...

Pytam autorkę, po co ona tego używa, bo trzeba mieć mocny argument, żeby nie używać ustawień regionalnych komputera i wkurzać tym użytkownika.