using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Globalization; namespace Demo7 { /// @author Vesa Lappalainen /// @version 16.10.2011 /// /// Aliohjelmia taulukoille /// public class Taulukot { /// /// Testataan taulukkoaliohjlemia /// /// ei käytössä public static void Main(string[] args) { double d = ErotaDouble("2k3", 1); Console.WriteLine(d); /// tulostaa 2 } /// /// Otetaan jonossa oleva reaaliluku. Jos luku ei ole /// mielekäs luku, niin palautetaan oletus. Desimaalina on aina . /// /// jono josta reaaliluku otetaan /// mikä arvo annetaan jos jonosta ei saada lukua /// otettu reaaliluku /// ///
        ///   Taulukot.ErotaDouble("") ~~~ 0.0;
        ///   Taulukot.ErotaDouble("",2) ~~~ 2.0;
        ///   Taulukot.ErotaDouble(" 2.3 ") ~~~ 2.3;
        ///   Taulukot.ErotaDouble("5 3") ~~~ 5;
        ///   Taulukot.ErotaDouble("5k3") ~~~ 5;
        ///   Taulukot.ErotaDouble("5e3") ~~~ 5000;
        ///   Taulukot.ErotaDouble("5E-3") ~~~ 0.005;
        ///   Taulukot.ErotaDouble("k") ~~~ 0.0;
        ///   Taulukot.ErotaDouble("k",1.0) ~~~ 1.0;
        ///   Taulukot.ErotaDouble("2..3") ~~~ 0.0;
        /// 
///
public static double ErotaDouble(string jono, double oletus = 0.0) { string reg = @"^([-0-9\.eE]+)(.*)$"; Match m = Regex.Match(jono.Trim(), reg); string tjono = m.Groups[1].Value; double tulos = oletus; NumberFormatInfo nfi = new NumberFormatInfo(); nfi.NumberDecimalSeparator = "."; if (double.TryParse(tjono, NumberStyles.Any, nfi, out tulos)) return tulos; return oletus; } /// /// Otetaan jonossa oleva reaaliluku. Jos luku ei ole /// mielekäs luku, niin palautetaan oletus. /// /// jono josta reaaliluku otetaan /// mikä arvo annetaan jos jonosta ei saada lukua /// otettu reaaliluku /// ///
        ///   Taulukot.Erota("",0.0) ~~~ 0.0;
        ///   Taulukot.Erota(" 2.3 ",0.0) ~~~ 2.3;
        ///   Taulukot.Erota("5 3",0.0) ~~~ 5;
        ///   Taulukot.Erota("k",0.0) ~~~ 0.0;
        ///   Taulukot.Erota("k",1.0) ~~~ 1.0;
        ///   Taulukot.Erota("2..3",0.0) ~~~ 0.0;
        /// 
///
public static double Erota(string jono, double oletus) { return ErotaDouble(jono, oletus); } } }