Decimal.ToSingle(Decimal) Metod

Definition

Konverterar värdet för det angivna Decimal till motsvarande flyttalsnummer med enkel precision.

public:
 static float ToSingle(System::Decimal d);
public static float ToSingle(decimal d);
static member ToSingle : decimal -> single
Public Shared Function ToSingle (d As Decimal) As Single

Parametrar

d
Decimal

Det decimaltal som ska konverteras.

Returer

Ett flyttal med enkel precision som motsvarar värdet dför .

Exempel

I följande kodexempel konverteras Decimal tal till Single värden med hjälp av ToSingle metoden.

// Example of the decimal.ToSingle and decimal.ToDouble methods.
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 float value.
        SingleValue = decimal.ToSingle( argument );

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

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

    public static void Main( )
    {
        Console.WriteLine( "This example of the \n" +
            "  decimal.ToSingle( decimal ) and \n" +
            "  decimal.ToDouble( decimal ) \nmethods " +
            "generates the following output. It \ndisplays " +
            "several 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
  decimal.ToSingle( decimal ) and
  decimal.ToDouble( decimal )
methods 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
*/
// Example of the Decimal.ToSingle and Decimal.ToDouble methods.
open System

let formatter obj1 obj2 obj3 = printfn $"{obj1,30}{obj2,17}{obj3,23}"

// Convert the decimal argument no exceptions are thrown.
let decimalToSgl_Dbl argument =
    // Convert the argument to a float value.
    let singleValue = Decimal.ToSingle argument

    // Convert the argument to a double value.
    let doubleValue = Decimal.ToDouble argument

    formatter argument singleValue doubleValue

printfn
    """This example of the
  Decimal.ToSingle( decimal ) and
  Decimal.ToDouble( decimal )
methods generates the following output. It
displays several converted decimal values.
"""

formatter "decimal argument" "float" "double"
formatter "----------------" "-----" "------"

// Convert decimal values and display the results.
decimalToSgl_Dbl 0.0000000000000000000000000001M
decimalToSgl_Dbl 0.0000000000123456789123456789M
decimalToSgl_Dbl 123M
decimalToSgl_Dbl (Decimal(123000000, 0, 0, false, 6uy))
decimalToSgl_Dbl 123456789.123456789M
decimalToSgl_Dbl 123456789123456789123456789M
decimalToSgl_Dbl Decimal.MinValue
decimalToSgl_Dbl Decimal.MaxValue


// This example of the
//   Decimal.ToSingle( decimal ) and
//   Decimal.ToDouble( decimal )
// methods 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
' Example of the Decimal.ToSingle and Decimal.ToDouble methods.
Module DecimalToSgl_DblDemo

    Dim formatter As String = "{0,30}{1,17}{2,23}"

    ' Convert the Decimal argument; no exceptions are thrown.
    Sub DecimalToSgl_Dbl( argument As Decimal )

        Dim SingleValue   As Object
        Dim DoubleValue   As Object

        ' Convert the argument to a Single value.
        SingleValue = Decimal.ToSingle( argument )

        ' Convert the argument to a Double value.
        DoubleValue = Decimal.ToDouble( argument )

        Console.WriteLine( formatter, argument, _
            SingleValue, DoubleValue )
    End Sub

    Sub Main( )

        Console.WriteLine( "This example of the " & vbCrLf & _
            "  Decimal.ToSingle( Decimal ) and " & vbCrLf & _
            "  Decimal.ToDouble( Decimal ) " & vbCrLf & "methods " & _
            "generates the following output. It " & vbCrLf & _
            "displays several converted Decimal values." & vbCrLf )
        Console.WriteLine( formatter, "Decimal argument", _
            "Single", "Double" )
        Console.WriteLine( formatter, "----------------", _
            "------", "------" )

        ' Convert Decimal values and display the results.
        DecimalToSgl_Dbl( 0.0000000000000000000000000001D )
        DecimalToSgl_Dbl( 0.0000000000112233445566778899D )
        DecimalToSgl_Dbl( 123D )
        DecimalToSgl_Dbl( New Decimal( 123000000, 0, 0, False, 6 ) )
        DecimalToSgl_Dbl( 123456789.123456789D )
        DecimalToSgl_Dbl( 123456789123456789123456789D )
        DecimalToSgl_Dbl( Decimal.MinValue )
        DecimalToSgl_Dbl( Decimal.MaxValue )
    End Sub 
End Module 

' This example of the
'   Decimal.ToSingle( Decimal ) and
'   Decimal.ToDouble( Decimal )
' methods generates the following output. It
' displays several converted Decimal values.
' 
'               Decimal argument           Single                 Double
'               ----------------           ------                 ------
' 0.0000000000000000000000000001            1E-28                  1E-28
' 0.0000000000112233445566778899     1.122334E-11   1.12233445566779E-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

Kommentarer

Den här åtgärden kan generera avrundningsfel eftersom ett flyttal med enkel precision har färre signifikanta siffror än en Decimal.

Du kan också konvertera ett Decimal till ett Single värde med hjälp av tilldelningsoperatorn Explicit . Eftersom konverteringen kan medföra en precisionsförlust måste du använda en gjutningsoperator i C# eller en konverteringsfunktion i Visual Basic.

Gäller för

Se även