예제 #1
0
 public Scalar ConvertTo(Unit destUnit, bool fullScale = false)
 {
     if (destUnit == Unit)
     {
         return(this);
     }
     {
         var conversion = UnitConversion.Get(Unit, destUnit);
         if (conversion == null)
         {
             throw new UnitConversionNotSupportedException(Unit, destUnit);
         }
         else
         {
             double amount;
             if (fullScale)
             {
                 var sourceZeroAmount = UnitConversion.GetScaleZero(Unit).ConvertTo(Unit).Amount;
                 var destZeroAmount   = UnitConversion.GetScaleZero(destUnit).ConvertTo(destUnit).Amount;
                 amount = (Amount - sourceZeroAmount) * conversion.Factor + destZeroAmount;
             }
             else
             {
                 amount = Amount * conversion.Factor;
             }
             return(new Scalar(amount, destUnit));
         }
     }
 }