Converts a numeric value into number expressed as a size value in bytes, kilobytes, megabytes, gigabytes, or terabytes depending on the size. : Casting Conversions « Data Types « C# / C Sharp

Home
C# / C Sharp
1.2D Graphics
2.Class Interface
3.Collections Data Structure
4.Components
5.Data Types
6.Database ADO.net
7.Design Patterns
8.Development Class
9.Event
10.File Stream
11.Generics
12.GUI Windows Form
13.Language Basics
14.LINQ
15.Network
16.Office
17.Reflection
18.Regular Expressions
19.Security
20.Services Event
21.Thread
22.Web Services
23.Windows
24.Windows Presentation Foundation
25.XML
26.XML LINQ
C# / C Sharp by API
C# / CSharp Tutorial
C# / CSharp Open Source
C# / C Sharp » Data Types » Casting ConversionsScreenshots 
Converts a numeric value into number expressed as a size value in bytes, kilobytes, megabytes, gigabytes, or terabytes depending on the size.
 
    
#region License
// Copyright (c) 2007 James Newton-King
//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation
// files (the "Software"), to deal in the Software without
// restriction, including without limitation the rights to use,
// copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following
// conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
// OTHER DEALINGS IN THE SOFTWARE.
#endregion

using System;
using System.Globalization;

namespace Newtonsoft.Utilities.Text
{
  public class FormatUtils
  {
    /// <summary>
    /// Converts a numeric value into a string that represents the number
    /// expressed as a size value in bytes, kilobytes, megabytes, gigabytes,
    /// or terabytes depending on the size. Output is identical to
    /// StrFormatByteSize() in shlwapi.dll. This is a format similar to
    /// the Windows Explorer file Properties page. For example:
    ///      532 becomes  532 bytes
    ///     1240 becomes 1.21 KB
    ///   235606 becomes  230 KB
    ///  5400016 becomes 5.14 MB
    /// </summary>
    /// <remarks>
    /// It was surprisingly difficult to emulate the StrFormatByteSize() function
    /// due to a few quirks. First, the function only displays three digits:
    ///  - displays 2 decimal places for values under 10            (e.g. 2.12 KB)
    ///  - displays 1 decimal place for values under 100            (e.g. 88.2 KB)
    ///  - displays 0 decimal places for values under 1000         (e.g. 532 KB)
    ///  - jumps to the next unit of measure for values over 1000    (e.g. 0.97 MB)
    /// The second quirk: insiginificant digits are truncated rather than
    /// rounded. The original function likely uses integer math.
    /// This implementation was tested to 100 TB.
    /// </remarks>
    public static string FileSizeToString(long fileSize)
    {
      if (fileSize < 1024)
      {
        return string.Format("{0} bytes", fileSize);
      }
      else
      {
        double value = fileSize;
        value = value / 1024;
        string unit = "KB";
        if (value >= 1000)
        {
          value = Math.Floor(value);
          value = value / 1024;
          unit = "MB";
        }
        if (value >= 1000)
        {
          value = Math.Floor(value);
          value = value / 1024;
          unit = "GB";
        }
        if (value >= 1000)
        {
          value = Math.Floor(value);
          value = value / 1024;
          unit = "TB";
        }

        if (value < 10)
        {
          value = Math.Floor(value * 100100;
          return string.Format("{0:n2} {1}", value, unit);
        }
        else if (value < 100)
        {
          value = Math.Floor(value * 1010;
          return string.Format("{0:n1} {1}", value, unit);
        }
        else
        {
          value = Math.Floor(value * 11;
          return string.Format("{0:n0} {1}", value, unit);
        }
      }
    }
  }
}

   
  
Related examples in the same category
1.An example that uses an implicit conversion operatorAn example that uses an implicit conversion operator
2.Use an explicit conversionUse an explicit conversion
3.illustrates casting objectsillustrates casting objects
4.The use of the cast operatorThe use of the cast operator
5.Casting int float and byte
6.User-Defined Conversions: How It Works: Conversion Lookup
7.Conversions: Numeric Types
8.Numeric Types: Checked Conversions
9.Conversions:Numeric Types:Checked Conversions
10.Conversions:Numeric Types:Conversions and Member LookupConversions:Numeric Types:Conversions and Member Lookup
11.Conversions:Numeric Types:Explicit Numeric ConversionsConversions:Numeric Types:Explicit Numeric Conversions
12.Conversions of Classes (Reference Types)\To an Interface the Object Might ImplementConversions of Classes (Reference Types)\To an Interface   the Object Might Implement
13.Conversions of Classes (Reference Types):To the Base Class of an ObjectConversions of Classes (Reference Types):To the Base Class of an Object
14.User-Defined Conversions:A Simple ExampleUser-Defined Conversions:A Simple Example
15.Classes and Pre and Post Conversions
16.Conversion Lookup
17.InvalidCastException
18.NumberStyles.Integer
19.NumberStyles.None
20.NumberStyles.Integer | NumberStyles.AllowDecimalPoint
21.NumberStyles.Integer | NumberStyles.AllowDecimalPoint
22.NumberStyles.Integer | NumberStyles.AllowThousands
23.NumberStyles.Integer | NumberStyles.AllowExponent
24.NumberStyles.HexNumber
25.Converts String to Any Other Type
26.Convert To Int 32
27.Converts a number value into a string that represents the number expressed in whole kilobytes.
28.Returns a System.String representation of the value object
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.