次の方法で共有


Decimal から Single への変換

Decimal を単精度浮動小数点数に変換します。

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

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

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

引数 [Visual Basic, JScript]

パラメータ [C#]

戻り値

変換された Decimal を表す単精度浮動小数点数。

解説

単精度浮動小数点数の有効桁数が Decimal より少ないため、この演算によって丸め誤差が発生することがあります。

使用例

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

 
// Example of the explicit conversions from decimal to float and 
// decimal to double.
using System;

class DecimalToSgl_DblDemo
{
    static string formatter = "{0,30}{1,17}{2,23}";

    // Convert the decimal argument; no exceptions are thrown.
    public static void DecimalToSgl_Dbl( decimal argument )
    {
        object SingleValue;
        object DoubleValue;

        // Convert the argument to a single value.
        SingleValue = (float)argument;

        // Convert the argument to a double value.
        DoubleValue = (double)argument;

        Console.WriteLine( formatter, argument, 
            SingleValue, DoubleValue );
    }

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

        // Convert decimal values and display the results.
        DecimalToSgl_Dbl( 0.0000000000000000000000000001M );
        DecimalToSgl_Dbl( 0.0000000000123456789123456789M );
        DecimalToSgl_Dbl( 123M );
        DecimalToSgl_Dbl( new decimal( 123000000, 0, 0, false, 6 ) );
        DecimalToSgl_Dbl( 123456789.123456789M );
        DecimalToSgl_Dbl( 123456789123456789123456789M );
        DecimalToSgl_Dbl( decimal.MinValue );
        DecimalToSgl_Dbl( decimal.MaxValue );
    }
}

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

              decimal argument            float                 double
              ----------------            -----                 ------
0.0000000000000000000000000001            1E-28                  1E-28
0.0000000000123456789123456789     1.234568E-11   1.23456789123457E-11
                           123              123                    123
                    123.000000              123                    123
           123456789.123456789     1.234568E+08       123456789.123457
   123456789123456789123456789     1.234568E+26   1.23456789123457E+26
-79228162514264337593543950335    -7.922816E+28  -7.92281625142643E+28
 79228162514264337593543950335     7.922816E+28   7.92281625142643E+28
*/

[C++] 
// Example of the explicit conversions from Decimal to float and 
// Decimal to double.
#using <mscorlib.dll>
using namespace System;

static __wchar_t* formatter = L"{0,30}{1,17}{2,23}";

// Convert the Decimal argument; no exceptions are thrown.
void DecimalToSgl_Dbl( Decimal argument )
{
    Object* SingleValue;
    Object* DoubleValue;

    // Convert the argument to a float value.
    SingleValue = __box( (float)argument );

    // Convert the argument to a double value.
    DoubleValue = __box( (double)argument );

    Console::WriteLine( formatter, __box( argument ), 
        SingleValue, DoubleValue );
}

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

    // Convert Decimal values and display the results.
    DecimalToSgl_Dbl( Decimal::Parse( "0.0000000000000000000000000001" ) );
    DecimalToSgl_Dbl( Decimal::Parse( "0.0000000000123456789123456789" ) );
    DecimalToSgl_Dbl( Decimal::Parse( "123" ) );
    DecimalToSgl_Dbl( Decimal( 123000000, 0, 0, false, 6 ) );
    DecimalToSgl_Dbl( Decimal::Parse( "123456789.123456789" ) );
    DecimalToSgl_Dbl( Decimal::Parse( "123456789123456789123456789" ) );
    DecimalToSgl_Dbl( Decimal::MinValue );
    DecimalToSgl_Dbl( Decimal::MaxValue );
}

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

              Decimal argument            float                 double
              ----------------            -----                 ------
0.0000000000000000000000000001            1E-28                  1E-28
0.0000000000123456789123456789     1.234568E-11   1.23456789123457E-11
                           123              123                    123
                    123.000000              123                    123
           123456789.123456789     1.234568E+08       123456789.123457
   123456789123456789123456789     1.234568E+26   1.23456789123457E+26
-79228162514264337593543950335    -7.922816E+28  -7.92281625142643E+28
 79228162514264337593543950335     7.922816E+28   7.92281625142643E+28
*/

[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 名前空間 | Single