次の方法で共有


Decimal から Int64 への変換

Decimal を 64 ビット符号付き整数に変換します。

returnValue = Decimal.op_Explicit(value)
[C#]
public static explicit operator long(decimalvalue);
[C++]
public: static __int64 op_Explicit();
[JScript]
returnValue = Int64(value);

[Visual Basic] Visual Basic では、この型で定義されている型変換を使用することができます。ただし、独自に定義することはできません。Decimal から Int64 への変換の代わりに、ToInt64 メソッドを使用できます。

[JScript] JScript では、この型で定義されている型変換を使用することができます。ただし、独自に定義することはできません。

引数 [Visual Basic, JScript]

パラメータ [C#]

戻り値

変換された Decimal を表す 64 ビット符号付き整数。

例外

例外の種類 条件
OverflowException value が Int64.MinValue より小さい値か、 Int64.MaxValue より大きい値です。

使用例

[C#, C++] 明示的な Decimal to Int64 変換を使用して Decimal の数値を Int64 の値に変換するコード例を次に示します。

 
// Example of the explicit conversions from decimal to long and 
// decimal to ulong.
using System;

class DecimalToU_Int64Demo
{
    const string formatter = "{0,25}{1,22}{2,22}";

    // Get the exception type name; remove the namespace prefix.
    public static string GetExceptionType( Exception ex )
    {
        string exceptionType = ex.GetType( ).ToString( );
        return exceptionType.Substring( 
            exceptionType.LastIndexOf( '.' ) + 1 );
    }

    // Convert the decimal argument; catch exceptions that are thrown.
    public static void DecimalToU_Int64( decimal argument )
    {
        object Int64Value;
        object UInt64Value;

        // Convert the argument to a long value.
        try
        {
            Int64Value = (long)argument;
        }
        catch( Exception ex )
        {
            Int64Value = GetExceptionType( ex );
        }

        // Convert the argument to a ulong value.
        try
        {
            UInt64Value = (ulong)argument;
        }
        catch( Exception ex )
        {
            UInt64Value = GetExceptionType( ex );
        }

        Console.WriteLine( formatter, argument, 
            Int64Value, UInt64Value );
    }

    public static void Main( )
    {
        Console.WriteLine( 
            "This example of the explicit conversions from decimal " +
            "to long \nand decimal to ulong generates the following " +
            "output. It displays \nseveral converted decimal " +
            "values.\n" );
        Console.WriteLine( formatter, "decimal argument", 
            "long/exception", "ulong/exception" );
        Console.WriteLine( formatter, "----------------", 
            "--------------", "---------------" );

        // Convert decimal values and display the results.
        DecimalToU_Int64( 123M );
        DecimalToU_Int64( new decimal( 123000, 0, 0, false, 3 ) );
        DecimalToU_Int64( 123.999M );
        DecimalToU_Int64( 18446744073709551615.999M );
        DecimalToU_Int64( 18446744073709551616M );
        DecimalToU_Int64( 9223372036854775807.999M );
        DecimalToU_Int64( 9223372036854775808M );
        DecimalToU_Int64( - 0.999M );
        DecimalToU_Int64( - 1M );
        DecimalToU_Int64( - 9223372036854775808.999M );
        DecimalToU_Int64( - 9223372036854775809M );
    }
}

/*
This example of the explicit conversions from decimal to long
and decimal to ulong generates the following output. It displays
several converted decimal values.

         decimal argument        long/exception       ulong/exception
         ----------------        --------------       ---------------
                      123                   123                   123
                  123.000                   123                   123
                  123.999                   123                   123
 18446744073709551615.999     OverflowException  18446744073709551615
     18446744073709551616     OverflowException     OverflowException
  9223372036854775807.999   9223372036854775807   9223372036854775807
      9223372036854775808     OverflowException   9223372036854775808
                   -0.999                     0                     0
                       -1                    -1     OverflowException
 -9223372036854775808.999  -9223372036854775808     OverflowException
     -9223372036854775809     OverflowException     OverflowException
*/

[C++] 
// Example of the explicit conversions from Decimal to __int64 and 
// Decimal to unsigned __int64.

#using <mscorlib.dll>
using namespace System;

const __wchar_t* formatter = L"{0,25}{1,22}{2,22}";

// Get the exception type name; remove the namespace prefix.
String* GetExceptionType( Exception* ex )
{
    String* exceptionType = ex->GetType( )->ToString( );
    return exceptionType->Substring( 
        exceptionType->LastIndexOf( '.' ) + 1 );
}

// Convert the Decimal argument; catch exceptions that are thrown.
void DecimalToU_Int64( Decimal argument )
{
    Object* Int64Value;
    Object* UInt64Value;

    // Convert the argument to an __int64 value.
    try
    {
        Int64Value = __box( (__int64)argument );
    }
    catch( Exception* ex )
    {
        Int64Value = GetExceptionType( ex );
    }

    // Convert the argument to an unsigned __int64 value.
    try
    {
        UInt64Value = __box( (unsigned __int64)argument );
    }
    catch( Exception* ex )
    {
        UInt64Value = GetExceptionType( ex );
    }

    Console::WriteLine( formatter, __box( argument ), 
        Int64Value, UInt64Value );
}

void main( )
{
    Console::WriteLine( 
        S"This example of the explicit conversions from Decimal to " 
        S"__int64 \nand Decimal to unsigned __int64 generates the " 
        S"following output. \nIt displays several converted Decimal " 
        S"values.\n" );
    Console::WriteLine( formatter, S"Decimal argument", 
        S"__int64", S"unsigned __int64" );
    Console::WriteLine( formatter, S"----------------", 
        S"-------", S"----------------" );

    // Convert Decimal values and display the results.
    DecimalToU_Int64( Decimal::Parse( "123" ) );
    DecimalToU_Int64( Decimal( 123000, 0, 0, false, 3 ) );
    DecimalToU_Int64( Decimal::Parse( "123.999" ) );
    DecimalToU_Int64( Decimal::Parse( "18446744073709551615.999" ) );
    DecimalToU_Int64( Decimal::Parse( "18446744073709551616" ) );
    DecimalToU_Int64( Decimal::Parse( "9223372036854775807.999" ) );
    DecimalToU_Int64( Decimal::Parse( "9223372036854775808" ) );
    DecimalToU_Int64( Decimal::Parse( "-0.999" ) );
    DecimalToU_Int64( Decimal::Parse( "-1" ) );
    DecimalToU_Int64( Decimal::Parse( "-9223372036854775808.999" ) );
    DecimalToU_Int64( Decimal::Parse( "-9223372036854775809" ) );
}

/*
This example of the explicit conversions from Decimal to __int64
and Decimal to unsigned __int64 generates the following output.
It displays several converted Decimal values.

         Decimal argument               __int64      unsigned __int64
         ----------------               -------      ----------------
                      123                   123                   123
                  123.000                   123                   123
                  123.999                   123                   123
 18446744073709551615.999     OverflowException  18446744073709551615
     18446744073709551616     OverflowException     OverflowException
  9223372036854775807.999   9223372036854775807   9223372036854775807
      9223372036854775808     OverflowException   9223372036854775808
                   -0.999                     0                     0
                       -1                    -1     OverflowException
 -9223372036854775808.999  -9223372036854775808     OverflowException
     -9223372036854775809     OverflowException     OverflowException
*/

[Visual Basic, JScript] Visual Basic および JScript のサンプルはありません。C# および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET, Common Language Infrastructure (CLI) Standard

参照

Decimal 構造体 | Decimal メンバ | System 名前空間 | Int64