Advertisement
Fhernd

Temperatura.cs

Jul 15th, 2016
1,036
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.05 KB | None | 0 0
  1. using System;
  2. using System.Globalization;
  3.  
  4. namespace Cap06_FormatoParseo
  5. {
  6.     class Temperatura : IFormattable
  7.     {
  8.         private decimal temperatura;
  9.  
  10.         public Temperatura(decimal temperatura)
  11.         {
  12.             if (temperatura < -273.15m)
  13.             {
  14.                 throw new ArgumentOutOfRangeException(String.Format("{0} is menor que el valor absoluto zero.",
  15.                     temperatura));
  16.             }
  17.            
  18.             this.temperatura = temperatura;
  19.         }
  20.  
  21.         public decimal Celcius
  22.         {
  23.             get
  24.             {
  25.                 return temperatura;
  26.             }
  27.         }
  28.  
  29.         public decimal Fahrenheit
  30.         {
  31.             get { return temperatura *9/5 + 32; }
  32.         }
  33.  
  34.         public decimal Kelvin
  35.         {
  36.             get { return temperatura + 273.15m;}
  37.         }
  38.  
  39.         public override string ToString()
  40.         {
  41.             return this.ToString("G", CultureInfo.CurrentCulture);
  42.         }
  43.  
  44.         public string ToString(string format)
  45.         {
  46.             return this.ToString(format, CultureInfo.CurrentCulture);
  47.         }
  48.  
  49.         public string ToString(string format, IFormatProvider formatProvider)
  50.         {
  51.             if (String.IsNullOrEmpty(format))
  52.             {
  53.                 format = "G";
  54.             }
  55.  
  56.             if (formatProvider == null)
  57.             {
  58.                 formatProvider = CultureInfo.CurrentCulture;
  59.             }
  60.  
  61.             switch (format.ToUpperInvariant())
  62.             {
  63.                 case "G":
  64.                 case "C":
  65.                     return temperatura.ToString("F2", formatProvider) + " °C";
  66.                 case "F":
  67.                     return Fahrenheit.ToString("F2", formatProvider) + " °F";
  68.                 case "K":
  69.                     return Kelvin.ToString("F2", formatProvider) + " °K";
  70.                 default:
  71.                     throw new FormatException(String.Format("La cadena de formato {0} no está soportada.",
  72.                         format));
  73.             }
  74.         }
  75.     }
  76. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement