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.
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(); } } }
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)
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(); } } }
Synes godt om
Ny brugerNybegynder
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.