Avatar billede swamboo Seniormester
23. marts 2010 - 00:15 Der er 8 kommentarer og
1 løsning

Er det et heltal?

Er der ikke en smart og simpel måde at finde ud af om et tal er et heltal - f.eks. 11 og 14 - eller et decimaltal 11,221 og 14,99311??

Takker
Avatar billede janus_007 Nybegynder
23. marts 2010 - 00:41 #1
hey swamboo

Brug GetType, eks.vis:

var someType = 11;

var whatType = someType.GetType();
Avatar billede arne_v Ekspert
23. marts 2010 - 00:44 #2
Hvis du har en streng med en af "11", "14", "11,221" eller "14,99311", så kan du bruge int.TryParse og double.TryParse til at se om de er valide som henholdsvis int og double. Husk at teste først for int, en int jo er valid double.
Avatar billede arne_v Ekspert
23. marts 2010 - 00:58 #3
Demo:

using System;

namespace E
{
    public class Program
    {
        public static void Test(string s)
        {
            int iv;
            double xv;
            if(int.TryParse(s, out iv))
            {
                Console.WriteLine(s + " is an integer number");
            }
            else if(double.TryParse(s, out xv))
            {
                Console.WriteLine(s + " is a decimal number");
            }
            else
            {
                Console.WriteLine(s + " is not a number");
            }
        }
        public static void Main(string[] args)
        {
            Test("123");
            Test("123,456");
            Test("ABC");
            Console.ReadKey();
        }
    }
}
Avatar billede olmer Nybegynder
23. marts 2010 - 10:50 #4
brug af modulus opreatoren.
If(x % 1 == 0) er det et heltal

Ole
Avatar billede swamboo Seniormester
23. marts 2010 - 20:41 #5
Wow - meget interessant at der er så mange løsninger på samme problem.
Må nok tilstå at den løsning jeg søgte var Olmer's - men i fortjener alle opint for jeres kreative svar.

Så send et svar, hvis du ønsker del i de mange opint ;o)
Avatar billede olmer Nybegynder
23. marts 2010 - 22:24 #6
Svar :-)
Avatar billede janus_007 Nybegynder
23. marts 2010 - 22:36 #7
Det er olmers point :)
Avatar billede arne_v Ekspert
24. marts 2010 - 02:16 #8
Var det det du ledte efter, så er det jo svaret.
Avatar billede arne_v Ekspert
24. marts 2010 - 02:19 #9
Generelt vil jeg dog fraråde == sammenligning af floating point. Det kan give nogle lidt mystiske resultater.

Prøv f.eks. og kør dette skumle program:

using System;

namespace E
{
    public class Program
    {
        public static void Main(string[] args)
        {
            double x = 1;
            double y = x/1000000+1;
            double z = 1000000*y-1000000;
            Console.WriteLine(z);
            Console.WriteLine(z % 1);
            Console.WriteLine(z % 1 == 0);
            Console.WriteLine(Math.Abs(z - Math.Round(z)) < 0.0000001);
            Console.ReadKey();
        }
    }
}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester