Single Yapı
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Tek hassasiyetli kayan nokta sayısını temsil eder.
public value class float : IComparable, IComparable<float>, IConvertible, IEquatable<float>, IFormattable
public value class float : IComparable<float>, IConvertible, IEquatable<float>, IParsable<float>, ISpanParsable<float>, IUtf8SpanParsable<float>, System::Numerics::IAdditionOperators<float, float, float>, System::Numerics::IAdditiveIdentity<float, float>, System::Numerics::IBinaryFloatingPointIeee754<float>, System::Numerics::IBinaryNumber<float>, System::Numerics::IBitwiseOperators<float, float, float>, System::Numerics::IComparisonOperators<float, float, bool>, System::Numerics::IDecrementOperators<float>, System::Numerics::IDivisionOperators<float, float, float>, System::Numerics::IEqualityOperators<float, float, bool>, System::Numerics::IExponentialFunctions<float>, System::Numerics::IFloatingPoint<float>, System::Numerics::IFloatingPointConstants<float>, System::Numerics::IFloatingPointIeee754<float>, System::Numerics::IHyperbolicFunctions<float>, System::Numerics::IIncrementOperators<float>, System::Numerics::ILogarithmicFunctions<float>, System::Numerics::IMinMaxValue<float>, System::Numerics::IModulusOperators<float, float, float>, System::Numerics::IMultiplicativeIdentity<float, float>, System::Numerics::IMultiplyOperators<float, float, float>, System::Numerics::INumber<float>, System::Numerics::INumberBase<float>, System::Numerics::IPowerFunctions<float>, System::Numerics::IRootFunctions<float>, System::Numerics::ISignedNumber<float>, System::Numerics::ISubtractionOperators<float, float, float>, System::Numerics::ITrigonometricFunctions<float>, System::Numerics::IUnaryNegationOperators<float, float>, System::Numerics::IUnaryPlusOperators<float, float>
public value class float : IComparable, IComparable<float>, IConvertible, IEquatable<float>, ISpanFormattable
public value class float : IComparable<float>, IConvertible, IEquatable<float>, IParsable<float>, ISpanParsable<float>, System::Numerics::IAdditionOperators<float, float, float>, System::Numerics::IAdditiveIdentity<float, float>, System::Numerics::IBinaryFloatingPointIeee754<float>, System::Numerics::IBinaryNumber<float>, System::Numerics::IBitwiseOperators<float, float, float>, System::Numerics::IComparisonOperators<float, float, bool>, System::Numerics::IDecrementOperators<float>, System::Numerics::IDivisionOperators<float, float, float>, System::Numerics::IEqualityOperators<float, float, bool>, System::Numerics::IExponentialFunctions<float>, System::Numerics::IFloatingPoint<float>, System::Numerics::IFloatingPointConstants<float>, System::Numerics::IFloatingPointIeee754<float>, System::Numerics::IHyperbolicFunctions<float>, System::Numerics::IIncrementOperators<float>, System::Numerics::ILogarithmicFunctions<float>, System::Numerics::IMinMaxValue<float>, System::Numerics::IModulusOperators<float, float, float>, System::Numerics::IMultiplicativeIdentity<float, float>, System::Numerics::IMultiplyOperators<float, float, float>, System::Numerics::INumber<float>, System::Numerics::INumberBase<float>, System::Numerics::IPowerFunctions<float>, System::Numerics::IRootFunctions<float>, System::Numerics::ISignedNumber<float>, System::Numerics::ISubtractionOperators<float, float, float>, System::Numerics::ITrigonometricFunctions<float>, System::Numerics::IUnaryNegationOperators<float, float>, System::Numerics::IUnaryPlusOperators<float, float>
public value class float : IComparable, IConvertible, IFormattable
public value class float : IComparable, IComparable<float>, IEquatable<float>, IFormattable
public struct Single : IComparable, IComparable<float>, IConvertible, IEquatable<float>, IFormattable
public readonly struct Single : IComparable<float>, IConvertible, IEquatable<float>, IParsable<float>, ISpanParsable<float>, IUtf8SpanParsable<float>, System.Numerics.IAdditionOperators<float,float,float>, System.Numerics.IAdditiveIdentity<float,float>, System.Numerics.IBinaryFloatingPointIeee754<float>, System.Numerics.IBinaryNumber<float>, System.Numerics.IBitwiseOperators<float,float,float>, System.Numerics.IComparisonOperators<float,float,bool>, System.Numerics.IDecrementOperators<float>, System.Numerics.IDivisionOperators<float,float,float>, System.Numerics.IEqualityOperators<float,float,bool>, System.Numerics.IExponentialFunctions<float>, System.Numerics.IFloatingPoint<float>, System.Numerics.IFloatingPointConstants<float>, System.Numerics.IFloatingPointIeee754<float>, System.Numerics.IHyperbolicFunctions<float>, System.Numerics.IIncrementOperators<float>, System.Numerics.ILogarithmicFunctions<float>, System.Numerics.IMinMaxValue<float>, System.Numerics.IModulusOperators<float,float,float>, System.Numerics.IMultiplicativeIdentity<float,float>, System.Numerics.IMultiplyOperators<float,float,float>, System.Numerics.INumber<float>, System.Numerics.INumberBase<float>, System.Numerics.IPowerFunctions<float>, System.Numerics.IRootFunctions<float>, System.Numerics.ISignedNumber<float>, System.Numerics.ISubtractionOperators<float,float,float>, System.Numerics.ITrigonometricFunctions<float>, System.Numerics.IUnaryNegationOperators<float,float>, System.Numerics.IUnaryPlusOperators<float,float>
public readonly struct Single : IComparable, IComparable<float>, IConvertible, IEquatable<float>, IFormattable
public readonly struct Single : IComparable, IComparable<float>, IConvertible, IEquatable<float>, ISpanFormattable
public readonly struct Single : IComparable<float>, IConvertible, IEquatable<float>, IParsable<float>, ISpanParsable<float>, System.Numerics.IAdditionOperators<float,float,float>, System.Numerics.IAdditiveIdentity<float,float>, System.Numerics.IBinaryFloatingPointIeee754<float>, System.Numerics.IBinaryNumber<float>, System.Numerics.IBitwiseOperators<float,float,float>, System.Numerics.IComparisonOperators<float,float,bool>, System.Numerics.IDecrementOperators<float>, System.Numerics.IDivisionOperators<float,float,float>, System.Numerics.IEqualityOperators<float,float,bool>, System.Numerics.IExponentialFunctions<float>, System.Numerics.IFloatingPoint<float>, System.Numerics.IFloatingPointConstants<float>, System.Numerics.IFloatingPointIeee754<float>, System.Numerics.IHyperbolicFunctions<float>, System.Numerics.IIncrementOperators<float>, System.Numerics.ILogarithmicFunctions<float>, System.Numerics.IMinMaxValue<float>, System.Numerics.IModulusOperators<float,float,float>, System.Numerics.IMultiplicativeIdentity<float,float>, System.Numerics.IMultiplyOperators<float,float,float>, System.Numerics.INumber<float>, System.Numerics.INumberBase<float>, System.Numerics.IPowerFunctions<float>, System.Numerics.IRootFunctions<float>, System.Numerics.ISignedNumber<float>, System.Numerics.ISubtractionOperators<float,float,float>, System.Numerics.ITrigonometricFunctions<float>, System.Numerics.IUnaryNegationOperators<float,float>, System.Numerics.IUnaryPlusOperators<float,float>
[System.Serializable]
public struct Single : IComparable, IConvertible, IFormattable
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public struct Single : IComparable, IComparable<float>, IConvertible, IEquatable<float>, IFormattable
public struct Single : IComparable, IComparable<float>, IEquatable<float>, IFormattable
type single = struct
interface IConvertible
interface IFormattable
type single = struct
interface IConvertible
interface IFormattable
interface IParsable<single>
interface ISpanFormattable
interface ISpanParsable<single>
interface IUtf8SpanFormattable
interface IUtf8SpanParsable<single>
interface IAdditionOperators<single, single, single>
interface IAdditiveIdentity<single, single>
interface IBinaryFloatingPointIeee754<single>
interface IBinaryNumber<single>
interface IBitwiseOperators<single, single, single>
interface IComparisonOperators<single, single, bool>
interface IEqualityOperators<single, single, bool>
interface IDecrementOperators<single>
interface IDivisionOperators<single, single, single>
interface IIncrementOperators<single>
interface IModulusOperators<single, single, single>
interface IMultiplicativeIdentity<single, single>
interface IMultiplyOperators<single, single, single>
interface INumber<single>
interface INumberBase<single>
interface ISubtractionOperators<single, single, single>
interface IUnaryNegationOperators<single, single>
interface IUnaryPlusOperators<single, single>
interface IExponentialFunctions<single>
interface IFloatingPointConstants<single>
interface IFloatingPoint<single>
interface ISignedNumber<single>
interface IFloatingPointIeee754<single>
interface IHyperbolicFunctions<single>
interface ILogarithmicFunctions<single>
interface IPowerFunctions<single>
interface IRootFunctions<single>
interface ITrigonometricFunctions<single>
interface IMinMaxValue<single>
type single = struct
interface IConvertible
interface ISpanFormattable
interface IFormattable
type single = struct
interface IConvertible
interface IFormattable
interface IParsable<single>
interface ISpanFormattable
interface ISpanParsable<single>
interface IAdditionOperators<single, single, single>
interface IAdditiveIdentity<single, single>
interface IBinaryFloatingPointIeee754<single>
interface IBinaryNumber<single>
interface IBitwiseOperators<single, single, single>
interface IComparisonOperators<single, single, bool>
interface IEqualityOperators<single, single, bool>
interface IDecrementOperators<single>
interface IDivisionOperators<single, single, single>
interface IIncrementOperators<single>
interface IModulusOperators<single, single, single>
interface IMultiplicativeIdentity<single, single>
interface IMultiplyOperators<single, single, single>
interface INumber<single>
interface INumberBase<single>
interface ISubtractionOperators<single, single, single>
interface IUnaryNegationOperators<single, single>
interface IUnaryPlusOperators<single, single>
interface IExponentialFunctions<single>
interface IFloatingPointConstants<single>
interface IFloatingPoint<single>
interface ISignedNumber<single>
interface IFloatingPointIeee754<single>
interface IHyperbolicFunctions<single>
interface ILogarithmicFunctions<single>
interface IPowerFunctions<single>
interface IRootFunctions<single>
interface ITrigonometricFunctions<single>
interface IMinMaxValue<single>
type single = struct
interface IConvertible
interface IFormattable
interface IParsable<single>
interface ISpanFormattable
interface ISpanParsable<single>
interface IAdditionOperators<single, single, single>
interface IAdditiveIdentity<single, single>
interface IBinaryFloatingPointIeee754<single>
interface IBinaryNumber<single>
interface IBitwiseOperators<single, single, single>
interface IComparisonOperators<single, single, bool>
interface IEqualityOperators<single, single, bool>
interface IDecrementOperators<single>
interface IDivisionOperators<single, single, single>
interface IIncrementOperators<single>
interface IModulusOperators<single, single, single>
interface IMultiplicativeIdentity<single, single>
interface IMultiplyOperators<single, single, single>
interface INumber<single>
interface INumberBase<single>
interface ISubtractionOperators<single, single, single>
interface IUnaryNegationOperators<single, single>
interface IUnaryPlusOperators<single, single>
interface IUtf8SpanFormattable
interface IUtf8SpanParsable<single>
interface IExponentialFunctions<single>
interface IFloatingPointConstants<single>
interface IFloatingPoint<single>
interface ISignedNumber<single>
interface IFloatingPointIeee754<single>
interface IHyperbolicFunctions<single>
interface ILogarithmicFunctions<single>
interface IPowerFunctions<single>
interface IRootFunctions<single>
interface ITrigonometricFunctions<single>
interface IMinMaxValue<single>
[<System.Serializable>]
type single = struct
interface IFormattable
interface IConvertible
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type single = struct
interface IFormattable
interface IConvertible
type single = struct
interface IFormattable
Public Structure Single
Implements IComparable, IComparable(Of Single), IConvertible, IEquatable(Of Single), IFormattable
Public Structure Single
Implements IAdditionOperators(Of Single, Single, Single), IAdditiveIdentity(Of Single, Single), IBinaryFloatingPointIeee754(Of Single), IBinaryNumber(Of Single), IBitwiseOperators(Of Single, Single, Single), IComparable(Of Single), IComparisonOperators(Of Single, Single, Boolean), IConvertible, IDecrementOperators(Of Single), IDivisionOperators(Of Single, Single, Single), IEqualityOperators(Of Single, Single, Boolean), IEquatable(Of Single), IExponentialFunctions(Of Single), IFloatingPoint(Of Single), IFloatingPointConstants(Of Single), IFloatingPointIeee754(Of Single), IHyperbolicFunctions(Of Single), IIncrementOperators(Of Single), ILogarithmicFunctions(Of Single), IMinMaxValue(Of Single), IModulusOperators(Of Single, Single, Single), IMultiplicativeIdentity(Of Single, Single), IMultiplyOperators(Of Single, Single, Single), INumber(Of Single), INumberBase(Of Single), IParsable(Of Single), IPowerFunctions(Of Single), IRootFunctions(Of Single), ISignedNumber(Of Single), ISpanParsable(Of Single), ISubtractionOperators(Of Single, Single, Single), ITrigonometricFunctions(Of Single), IUnaryNegationOperators(Of Single, Single), IUnaryPlusOperators(Of Single, Single), IUtf8SpanParsable(Of Single)
Public Structure Single
Implements IComparable, IComparable(Of Single), IConvertible, IEquatable(Of Single), ISpanFormattable
Public Structure Single
Implements IAdditionOperators(Of Single, Single, Single), IAdditiveIdentity(Of Single, Single), IBinaryFloatingPointIeee754(Of Single), IBinaryNumber(Of Single), IBitwiseOperators(Of Single, Single, Single), IComparable(Of Single), IComparisonOperators(Of Single, Single, Boolean), IConvertible, IDecrementOperators(Of Single), IDivisionOperators(Of Single, Single, Single), IEqualityOperators(Of Single, Single, Boolean), IEquatable(Of Single), IExponentialFunctions(Of Single), IFloatingPoint(Of Single), IFloatingPointConstants(Of Single), IFloatingPointIeee754(Of Single), IHyperbolicFunctions(Of Single), IIncrementOperators(Of Single), ILogarithmicFunctions(Of Single), IMinMaxValue(Of Single), IModulusOperators(Of Single, Single, Single), IMultiplicativeIdentity(Of Single, Single), IMultiplyOperators(Of Single, Single, Single), INumber(Of Single), INumberBase(Of Single), IParsable(Of Single), IPowerFunctions(Of Single), IRootFunctions(Of Single), ISignedNumber(Of Single), ISpanParsable(Of Single), ISubtractionOperators(Of Single, Single, Single), ITrigonometricFunctions(Of Single), IUnaryNegationOperators(Of Single, Single), IUnaryPlusOperators(Of Single, Single)
Public Structure Single
Implements IComparable, IConvertible, IFormattable
Public Structure Single
Implements IComparable, IComparable(Of Single), IEquatable(Of Single), IFormattable
- Devralma
- Öznitelikler
- Uygulamalar
-
IComparable IComparable<Single> IConvertible IEquatable<Single> IFormattable IComparable<TSelf> IEquatable<TSelf> IParsable<Single> IParsable<TSelf> ISpanFormattable ISpanParsable<Single> ISpanParsable<TSelf> IUtf8SpanFormattable IUtf8SpanParsable<Single> IUtf8SpanParsable<TSelf> IAdditionOperators<Single,Single,Single> IAdditionOperators<TSelf,TSelf,TSelf> IAdditiveIdentity<Single,Single> IAdditiveIdentity<TSelf,TSelf> IBinaryFloatingPointIeee754<Single> IBinaryNumber<Single> IBinaryNumber<TSelf> IBitwiseOperators<Single,Single,Single> IBitwiseOperators<TSelf,TSelf,TSelf> IComparisonOperators<Single,Single,Boolean> IComparisonOperators<TSelf,TSelf,Boolean> IDecrementOperators<Single> IDecrementOperators<TSelf> IDivisionOperators<Single,Single,Single> IDivisionOperators<TSelf,TSelf,TSelf> IEqualityOperators<Single,Single,Boolean> IEqualityOperators<TSelf,TOther,TResult> IEqualityOperators<TSelf,TSelf,Boolean> IExponentialFunctions<Single> IExponentialFunctions<TSelf> IFloatingPoint<Single> IFloatingPoint<TSelf> IFloatingPointConstants<Single> IFloatingPointConstants<TSelf> IFloatingPointIeee754<Single> IFloatingPointIeee754<TSelf> IHyperbolicFunctions<Single> IHyperbolicFunctions<TSelf> IIncrementOperators<Single> IIncrementOperators<TSelf> ILogarithmicFunctions<Single> ILogarithmicFunctions<TSelf> IMinMaxValue<Single> IModulusOperators<Single,Single,Single> IModulusOperators<TSelf,TSelf,TSelf> IMultiplicativeIdentity<Single,Single> IMultiplicativeIdentity<TSelf,TSelf> IMultiplyOperators<Single,Single,Single> IMultiplyOperators<TSelf,TSelf,TSelf> INumber<Single> INumber<TSelf> INumberBase<Single> INumberBase<TSelf> IPowerFunctions<Single> IPowerFunctions<TSelf> IRootFunctions<Single> IRootFunctions<TSelf> ISignedNumber<Single> ISignedNumber<TSelf> ISubtractionOperators<Single,Single,Single> ISubtractionOperators<TSelf,TSelf,TSelf> ITrigonometricFunctions<Single> ITrigonometricFunctions<TSelf> IUnaryNegationOperators<Single,Single> IUnaryNegationOperators<TSelf,TSelf> IUnaryPlusOperators<Single,Single> IUnaryPlusOperators<TSelf,TSelf>
Açıklamalar
Single değer türü, negatif 3.402823e38'den pozitif 3.402823e38'e kadar olan değeriyle birlikte pozitif veya negatif sıfır, PositiveInfinity, NegativeInfinity ve sayı olmayan (NaN) bir tek duyarlıklı 32-bit sayıyı temsil eder. Son derece büyük (gezegenler veya galaksiler arasındaki mesafeler gibi) veya son derece küçük (kilogram cinsinden bir maddenin moleküler kütlesi gibi) ve genellikle belirsiz olan (örneğin, dünyadan başka bir güneş sistemine olan uzaklık) değerleri temsil etmeye yöneliktir. Single türü, ikili kayan nokta aritmetiği için IEC 60559:1989 (IEEE 754) standardına uygundur.
System.Single bu türün örneklerini karşılaştırmak, bir örneğin değerini string temsilcisine dönüştürmek ve bir sayının string temsilcisini bu türün bir örneğine dönüştürmek için yöntemler sağlar. Değer türlerinin dize temsillerini kontrol etmek için biçim belirtim kodlarının nasıl kullanılacağı hakkında bilgi için Biçim Türleri, Standart Sayısal Biçim Dizeleri ve Özel Sayısal Biçim Dizeleri konularına bakın.
Kayan nokta gösterimi ve hassasiyet
Single veri türü, aşağıdaki tabloda gösterildiği gibi, 32 bitlik ikili formatta tek duyarlıklı kayan nokta değerlerini depolar.
| Bölüm | Bitler |
|---|---|
| İşaret veya mantis | 0-22 |
| Exponent | 23-30 |
| İşaret (0 = pozitif, 1 = negatif) | 31 |
Ondalık kesirlerin bazı kesirli değerleri (1/3 veya Math.PIgibi) tam olarak temsil edemediği gibi, ikili kesirler de bazı kesirli değerleri temsil edemez. Örneğin, 2/10, ondalık kesir olarak tam olarak .2 ile temsil edilirken, ikili kesir olarak .0011111001001100 ile temsil edilir ve "1100" kalıbı sonsuza kadar tekrarlar. Bu durumda kayan nokta değeri, temsil ettiği sayının kesin olmayan bir gösterimini sağlar. Orijinal kayan nokta değeri üzerinde ek matematiksel işlemler yapmak genellikle onun kesinlik eksikliğini artırır. Örneğin, .3'ü 10 ile çarpmak ve .3'ü dokuz kez .3'e eklemek işlemlerinin sonuçlarını karşılaştırırsanız, eklemenin daha az hassas bir sonuç ürettiğini görürsünüz, çünkü toplama, çarpma işleminden sekiz tane daha fazla işlem içerir. tr-TR: İki Single değeri, yalnızca "R" standart sayısal biçim dizesi kullanılarak görüntülenirse, bu tutarsızlığın belirgin olduğunu unutmayın. Gerekirse, Single türünün desteklediği tüm 9 basamaklı hassasiyeti görüntüler.
using System;
public class Example12
{
public static void Main()
{
Single value = .2f;
Single result1 = value * 10f;
Single result2 = 0f;
for (int ctr = 1; ctr <= 10; ctr++)
result2 += value;
Console.WriteLine($".2 * 10: {result1:R}");
Console.WriteLine($".2 Added 10 times: {result2:R}");
}
}
// The example displays the following output:
// .2 * 10: 2
// .2 Added 10 times: 2.0000002
let value = 0.2f
let result1 = value * 10f
let mutable result2 = 0f
for _ = 1 to 10 do
result2 <- result2 + value
printfn $".2 * 10: {result1:R}"
printfn $".2 Added 10 times: {result2:R}"
// The example displays the following output:
// .2 * 10: 2
// .2 Added 10 times: 2.00000024
Module Example13
Public Sub Main()
Dim value As Single = 0.2
Dim result1 As Single = value * 10
Dim result2 As Single
For ctr As Integer = 1 To 10
result2 += value
Next
Console.WriteLine(".2 * 10: {0:R}", result1)
Console.WriteLine(".2 Added 10 times: {0:R}", result2)
End Sub
End Module
' The example displays the following output:
' .2 * 10: 2
' .2 Added 10 times: 2.0000002
Bazı sayılar tam olarak kesirli ikili değerler olarak temsil edilemediği için kayan noktalı sayılar yalnızca gerçek sayılara yakın olabilir.
Tüm kayan noktalı sayılar sınırlı sayıda anlamlı basamağa sahiptir ve bu da kayan noktalı bir değerin gerçek bir sayıyı ne kadar doğru bir şekilde temsil ettiğini belirler. Bir Single değeri 7'ye kadar ondalık basamak hassasiyetine sahiptir, ancak dahili olarak en fazla 9 basamak tutulur. Bu, bazı kayan nokta işlemlerinin bir kayan nokta değerini değiştirmek için yeterli hassasiyete sahip olmayabileceği anlamına gelir. Aşağıdaki örnek, büyük bir tek hassasiyetli kayan nokta değerini tanımlar ve ardından Single.Epsilon ile bir katrilyonun çarpımını buna ekler. Ancak, ürün orijinal kayan nokta değerini değiştirmek için çok küçük. En az anlamlı basamağı binden bir, üründeki en anlamlı basamak ise 10-30'dur.
using System;
public class Example13
{
public static void Main()
{
Single value = 123.456f;
Single additional = Single.Epsilon * 1e15f;
Console.WriteLine($"{value} + {additional} = {value + additional}");
}
}
// The example displays the following output:
// 123.456 + 1.401298E-30 = 123.456
open System
let value = 123.456f
let additional = Single.Epsilon * 1e15f
printfn $"{value} + {additional} = {value + additional}"
// The example displays the following output:
// 123.456 + 1.401298E-30 = 123.456
Module Example
Public Sub Main()
Dim value As Single = 123.456
Dim additional As Single = Single.Epsilon * 1e15
Console.WriteLine($"{value} + {additional} = {value + additional}")
End Sub
End Module
' The example displays the following output:
' 123.456 + 1.401298E-30 = 123.456
Kayan noktalı bir sayının sınırlı duyarlığı çeşitli sonuçlara neden olur:
Belirli bir kesinlik için eşit görünen iki kayan noktalı sayı, en az önemli basamakları farklı olduğundan eşit olarak değerlendirilmeyebilir. Aşağıdaki örnekte, bir dizi sayı bir araya eklenir ve bunların toplamı beklenen toplamlarıyla karşılaştırılır. yöntemine yapılan
Equalsçağrı, değerlerin eşit olmadığını gösterir.using System; public class PrecisionList3Example { public static void Main() { Single[] values = { 10.01f, 2.88f, 2.88f, 2.88f, 9.0f }; Single result = 27.65f; Single total = 0f; foreach (var value in values) total += value; if (total.Equals(result)) Console.WriteLine("The sum of the values equals the total."); else Console.WriteLine($"The sum of the values ({total}) does not equal the total ({result})."); } } // The example displays the following output on .NET: // The sum of the values (27.650002) does not equal the total (27.65). // The example displays the following output on .NET Framework: // The sum of the values (27.65) does not equal the total (27.65).let values = [| 10.01f; 2.88f; 2.88f; 2.88f; 9f |] let result = 27.65f let mutable total = 0f for value in values do total <- total + value if total.Equals result then printfn "The sum of the values equals the total." else printfn "The sum of the values ({total}) does not equal the total ({result})." // The example displays the following output: // The sum of the values (27.65) does not equal the total (27.65). // // If the index items in the Console.WriteLine statement are changed to {0:R}, // the example displays the following output: // The sum of the values (27.6500015) does not equal the total (27.65).Dim values() As Single = {10.01, 2.88, 2.88, 2.88, 9.0} Dim result As Single = 27.65 Dim total As Single For Each value In values total += value Next If total.Equals(result) Then Console.WriteLine("The sum of the values equals the total.") Else Console.WriteLine($"The sum of the values ({total}) does not equal the total ({result}).") End If End Sub ' The example displays the following output on .NET: ' The sum of the values (27.650002) does not equal the total (27.65). ' The example displays the following output on .NET Framework: ' The sum of the values (27.65) does not equal the total (27.65).Toplama işlemleri sırasında kesinlik kaybı nedeniyle iki değer eşit değildir. Bu durumda sorun, karşılaştırmayı gerçekleştirmeden önce Math.Round(Double, Int32) değerlerini istenen duyarlıkta yuvarlamak için Single yöntemi çağrılarak çözülebilir.
Kayan noktalı sayı kullanan bir matematik veya karşılaştırma işlemi, ondalık sayı kullanıldığında aynı sonucu vermeyebilir çünkü ikili kayan noktalı sayı ondalık sayıya eşit olmayabilir. Daha önceki bir örnek, 0.3'ü 10 ile çarpmanın sonucunu göstererek ve 0.3'ü dokuz kez 0.3'e ekleyerek bunu açıklamıştı.
Sayısal işlemlerde kesirli değerlerle doğruluk önemli olduğunda, Decimal türü yerine Single türünü kullanın. Sayısal işlemlerde Int64 veya UInt64 türlerinin kapsamı dışındaki tam sayı değerlerinin doğruluğu önemli olduğunda, BigInteger türünü kullanın.
Single değerlerin duyarlığı Double değerlerden daha azdır. Duyarlık farklılıkları nedeniyle genellikle Single'e dönüştürülen bir Double değeri, Double değerine eşit değildir. Aşağıdaki örnekte, aynı bölme işlemlerinin sonucu bir Double değeri ve bir Single değeri olarak atanmıştır. Single değeri bir Double'a atandıktan sonra, iki değerin karşılaştırması bunların eşit olmadığını gösterir.
using System; public class Example9 { public static void Run() { double value1 = 1 / 3.0; float sValue2 = 1 / 3.0f; double value2 = (double)sValue2; Console.WriteLine($"{value1:R} = {value2:R}: {value1.Equals(value2)}"); } } // The example displays the following output: // 0.33333333333333331 = 0.3333333432674408: Falseopen System let value1 = 1. / 3. let sValue2 = 1f /3f let value2 = double sValue2 printfn $"{value1:R} = {value2:R}: {value1.Equals value2}" // The example displays the following output: // 0.33333333333333331 = 0.3333333432674408: FalseModule Example10 Public Sub Run() Dim value1 As Double = 1 / 3 Dim sValue2 As Single = 1 / 3 Dim value2 As Double = CDbl(sValue2) Console.WriteLine("{0} = {1}: {2}", value1, value2, value1.Equals(value2)) End Sub End Module ' The example displays the following output: ' 0.33333333333333331 = 0.3333333432674408: FalseBu sorunu önlemek için, Double veri türü yerine Single veri türünü kullanın veya her iki değerin de aynı hassasiyete sahip olması için Round yöntemini kullanın.
Eşitlik testi
Eşit kabul edilmesi için iki Single değerin aynı değerleri temsil etmesi gerekir. Ancak, değerler arasındaki hassasiyet farkları veya bir ya da her iki değerin hassasiyet kaybı nedeniyle, aynı olması beklenen kayan nokta değerleri, en az anlamlı basamaklarındaki farklılıklar nedeniyle sıklıkla eşit olmamaktadır. Sonuç olarak, iki değerin eşit olup olmadığını belirlemek için Equals yöntemine çağrılar veya iki CompareTo değer arasındaki ilişkiyi belirlemek için Single yöntemine çağrılar, genellikle beklenmeyen sonuçlar verir. Bu, aşağıdaki örnekte belirgindir; burada iki görünürde eşit Single değeri, ilk değerin 7 basamaklı bir hassasiyete sahip olması, oysa ikinci değerin 9 basamaklı olması nedeniyle eşit olmayan hale gelir.
using System;
public class Example
{
public static void Main()
{
float value1 = .3333333f;
float value2 = 1.0f/3;
Console.WriteLine($"{value1:R} = {value2:R}: {value1.Equals(value2)}");
}
}
// The example displays the following output:
// 0.3333333 = 0.333333343: False
let value1 = 0.3333333f
let value2 = 1f / 3f
printfn $"{value1:R} = {value2:R}: {value1.Equals value2}"
// The example displays the following output:
// 0.3333333 = 0.333333343: False
Module Example1
Public Sub Main()
Dim value1 As Single = 0.3333333
Dim value2 As Single = 1 / 3
Console.WriteLine("{0:R} = {1:R}: {2}", value1, value2, value1.Equals(value2))
End Sub
End Module
' The example displays the following output:
' 0.3333333 = 0.333333343: False
Farklı kod yollarını izleyen ve farklı şekillerde işlenen hesaplanan değerlerin genellikle eşit olmadığını kanıtlar. Aşağıdaki örnekte, bir Single değerinin karesi alınır ve ardından orijinal değeri geri yüklemek için karekök hesaplanır. İkinci bir Single, 3,51 ile çarpılır ve karesi alınır, ardından sonucun karekökü 3,51'e bölünerek özgün değer geri yüklenir. İki değer aynı gibi görünse de, Equals(Single) yöntemine yapılan bir çağrı bunların eşit olmadığını gösterir.
float value1 = 10.201438f;
value1 = (float)Math.Sqrt((float)Math.Pow(value1, 2));
float value2 = (float)Math.Pow((float)value1 * 3.51f, 2);
value2 = ((float)Math.Sqrt(value2)) / 3.51f;
Console.WriteLine($"{value1} = {value2}: {value1.Equals(value2)}");
// The example displays the following output on .NET:
// 10.201438 = 10.201439: False
// The example displays the following output on .NET Framework:
// 10.20144 = 10.20144: False
let value1 =
10.201438f ** 2f
|> sqrt
let value2 =
((value1 * 3.51f) ** 2f |> sqrt) / 3.51f
printfn $"{value1} = {value2}: {value1.Equals value2}\n"
printfn $"{value1:G9} = {value2:G9}"
// The example displays the following output:
// 10.20144 = 10.20144: False
//
// 10.201438 = 10.2014389
Dim value1 As Single = 10.201438
value1 = CSng(Math.Sqrt(CSng(Math.Pow(value1, 2))))
Dim value2 As Single = CSng(Math.Pow(value1 * CSng(3.51), 2))
value2 = CSng(Math.Sqrt(value2) / CSng(3.51))
Console.WriteLine("{0} = {1}: {2}",
value1, value2, value1.Equals(value2))
' The example displays the following output on .NET:
' 10.201438 = 10.201439: False
' The example displays the following output on .NET Framework:
' 10.20144 = 10.20144: False
Hassasiyet kaybının bir karşılaştırmanın sonucunu etkileme olasılığı olan durumlarda, Equals veya CompareTo yöntemini çağırmak yerine aşağıdaki teknikleri kullanabilirsiniz:
her iki değerin de aynı duyarlıkta sahip olduğundan emin olmak için Math.Round yöntemini çağırın. Aşağıdaki örnek, önceki bir örneği bu yaklaşımı kullanacak şekilde değiştirerek iki kesirli değerin eşdeğer olmasını sağlar.
float value1 = .3333333f; float value2 = 1.0f / 3; int precision = 7; value1 = (float)Math.Round(value1, precision); value2 = (float)Math.Round(value2, precision); Console.WriteLine($"{value1:R} = {value2:R}: {value1.Equals(value2)}"); // The example displays the following output: // 0.3333333 = 0.3333333: Trueopen System let value1 = 0.3333333f let value2 = 1f / 3f let precision = 7 let value1r = Math.Round(float value1, precision) |> float32 let value2r = Math.Round(float value2, precision) |> float32 printfn $"{value1:R} = {value2:R}: {value1.Equals value2}" // The example displays the following output: // 0.3333333 = 0.3333333: TrueModule Example3 Public Sub Main() Dim value1 As Single = 0.3333333 Dim value2 As Single = 1 / 3 Dim precision As Integer = 7 value1 = CSng(Math.Round(value1, precision)) value2 = CSng(Math.Round(value2, precision)) Console.WriteLine("{0:R} = {1:R}: {2}", value1, value2, value1.Equals(value2)) End Sub End Module ' The example displays the following output: ' 0.3333333 = 0.3333333: TrueKesinlik sorunu orta nokta değerlerini yuvarlama için de geçerlidir. Daha fazla bilgi için bkz. Math.Round(Double, Int32, MidpointRounding) yöntemi.
Yaklaşık eşitlik yerine eşitlik için test yapın. Bu teknik, iki değerin farklı olabileceği ancak yine de eşit olabileceği mutlak bir miktar tanımlamanızı veya daha küçük değerin daha büyük değerden sapabileceği göreceli bir miktar tanımlamanızı gerektirir.
Warning
Single.Epsilon bazen eşitlik testi sırasında iki Single değeri arasındaki uzaklığın mutlak bir ölçüsü olarak kullanılır. Ancak Single.Epsilon değeri sıfır olan bir Single eklenebilecek veya çıkarılabilen en küçük olası değeri ölçer. Çoğu pozitif ve negatif Single değeri için Single.Epsilon değeri algılanamaz kadar küçüktür. Bu nedenle, sıfır olan değerler dışında, eşitlik için testlerde kullanılmasını önermeyiz.
Aşağıdaki örnek, iki değer arasındaki göreli farkı test eden bir
IsApproximatelyEqualyöntemi tanımlamak için ikinci yaklaşımı kullanır. AyrıcaIsApproximatelyEqualyöntemine ve Equals(Single) yöntemine yapılan çağrıların sonucunu karşılaştırır.public static void Main() { float one1 = .1f * 10; float one2 = 0f; for (int ctr = 1; ctr <= 10; ctr++) one2 += .1f; Console.WriteLine($"{one1:R} = {one2:R}: {one1.Equals(one2)}"); Console.WriteLine($"{one1:R} is approximately equal to {one2:R}: " + $"{IsApproximatelyEqual(one1, one2, .000001f)}"); float negativeOne1 = -1 * one1; float negativeOne2 = -1 * one2; Console.WriteLine($"{negativeOne1:R} = {negativeOne2:R}: {negativeOne1.Equals(negativeOne2)}"); Console.WriteLine($"{negativeOne1:R} is approximately equal to {negativeOne2:R}: " + $"{IsApproximatelyEqual(negativeOne1, negativeOne2, .000001f)}"); } static bool IsApproximatelyEqual(float value1, float value2, float epsilon) { // If they are equal anyway, just return True. if (value1.Equals(value2)) return true; // Handle NaN, Infinity. if (Double.IsInfinity(value1) | Double.IsNaN(value1)) return value1.Equals(value2); else if (Double.IsInfinity(value2) | Double.IsNaN(value2)) return value1.Equals(value2); // Handle zero to avoid division by zero. double divisor = Math.Max(value1, value2); if (divisor.Equals(0)) divisor = Math.Min(value1, value2); return Math.Abs((value1 - value2) / divisor) <= epsilon; } // The example displays the following output on .NET: // 1 = 1.0000001: False // 1 is approximately equal to 1.0000001: True // -1 = -1.0000001: False // -1 is approximately equal to -1.0000001: Trueopen System let isApproximatelyEqual value1 value2 epsilon = // If they are equal anyway, just return True. if value1.Equals value2 then true // Handle NaN, Infinity. elif Single.IsInfinity value1 || Single.IsNaN value1 then value1.Equals value2 elif Single.IsInfinity value2 || Single.IsNaN value2 then value1.Equals value2 else // Handle zero to avoid division by zero let divisor = max value1 value2 let divisor = if divisor.Equals 0 then min value1 value2 else divisor abs (value1 - value2) / divisor <= epsilon let one1 = 0.1f * 10f let mutable one2 = 0f for _ = 1 to 10 do one2 <- one2 + 0.1f printfn $"{one1:R} = {one2:R}: {one1.Equals one2}" printfn $"{one1:R} is approximately equal to {one2:R}: {isApproximatelyEqual one1 one2 0.000001f}" // The example displays the following output: // 1 = 1.00000012: False // 1 is approximately equal to 1.00000012: TruePublic Sub Main() Dim one1 As Single = 0.1 * 10 Dim one2 As Single = 0 For ctr As Integer = 1 To 10 one2 += CSng(0.1) Next Console.WriteLine("{0:R} = {1:R}: {2}", one1, one2, one1.Equals(one2)) Console.WriteLine("{0:R} is approximately equal to {1:R}: {2}", one1, one2, IsApproximatelyEqual(one1, one2, 0.000001)) End Sub Function IsApproximatelyEqual(value1 As Single, value2 As Single, epsilon As Single) As Boolean ' If they are equal anyway, just return True. If value1.Equals(value2) Then Return True ' Handle NaN, Infinity. If Single.IsInfinity(value1) Or Single.IsNaN(value1) Then Return value1.Equals(value2) ElseIf Single.IsInfinity(value2) Or Single.IsNaN(value2) Then Return value1.Equals(value2) End If ' Handle zero to avoid division by zero. Dim divisor As Single = Math.Max(value1, value2) If divisor.Equals(0) Then divisor = Math.Min(value1, value2) End If Return Math.Abs(value1 - value2) / divisor <= epsilon End Function ' The example displays the following output: ' 1 = 1.0000001: False ' 1 is approximately equal to 1.0000001: True
Kayan nokta değerleri ve özel durumları
Kayan nokta değerleriyle yapılan işlemler, sıfıra bölme veya taşma gibi yasadışı işlemlerde istisnalar fırlatan tamsayı türleriyle yapılan işlemlerin aksine, istisna fırlatmaz. Bu durumlarda, bunun yerine, kayan nokta işleminin sonucu sıfır, pozitif sonsuzluk, negatif sonsuzluk veya bir sayı değil (NaN) olur.
Kayan nokta işleminin sonucu hedef biçim için çok küçükse, sonuç sıfır olur. Bu, aşağıdaki örnekte gösterildiği gibi, iki çok küçük kayan nokta sayısı çarpıldığında meydana gelebilir.
float value1 = 1.163287e-36f; float value2 = 9.164234e-25f; float result = value1 * value2; Console.WriteLine($"{value1} * {value2} = {result}"); Console.WriteLine($"{result} = 0: {result.Equals(0.0f)}"); // The example displays the following output: // 1.163287E-36 * 9.164234E-25 = 0 // 0 = 0: Truelet value1 = 1.163287e-36f let value2 = 9.164234e-25f let result = value1 * value2 printfn $"{value1} * {value2} = {result}" printfn $"{result} = 0: {result.Equals(0f)}" // The example displays the following output: // 1.163287E-36 * 9.164234E-25 = 0 // 0 = 0: TrueModule Example7 Public Sub Main() Dim value1 As Single = 1.163287E-36 Dim value2 As Single = 9.164234E-25 Dim result As Single = value1 * value2 Console.WriteLine("{0} * {1} = {2:R}", value1, value2, result) Console.WriteLine("{0} = 0: {1}", result, result.Equals(0)) End Sub End Module ' The example displays the following output: ' 1.163287E-36 * 9.164234E-25 = 0 ' 0 = 0: TrueKayan nokta işleminin sonucunun büyüklüğü hedef biçimin aralığını aşarsa, sonucun işaretine uygun olarak işlemin sonucu PositiveInfinity veya NegativeInfinityolur. Single.MaxValue taşan bir işlemin sonucu PositiveInfinityve aşağıdaki örnekte gösterildiği gibi Single.MinValue taşan bir işlemin sonucu NegativeInfinity' dir.
float value1 = 3.065e35f; float value2 = 6.9375e32f; float result = value1 * value2; Console.WriteLine($"PositiveInfinity: {Single.IsPositiveInfinity(result)}"); Console.WriteLine($"NegativeInfinity: {Single.IsNegativeInfinity(result)}"); Console.WriteLine(); value1 = -value1; result = value1 * value2; Console.WriteLine($"PositiveInfinity: {Single.IsPositiveInfinity(result)}"); Console.WriteLine($"NegativeInfinity: {Single.IsNegativeInfinity(result)}"); // The example displays the following output: // PositiveInfinity: True // NegativeInfinity: False // // PositiveInfinity: False // NegativeInfinity: Trueopen System let value1 = 3.065e35f let value2 = 6.9375e32f let result = value1 * value2 printfn $"PositiveInfinity: {Single.IsPositiveInfinity result}" printfn $"NegativeInfinity: {Single.IsNegativeInfinity result}\n" let value3 = -value1 let result2 = value3 * value2 printfn $"PositiveInfinity: {Single.IsPositiveInfinity result}" printfn $"NegativeInfinity: {Single.IsNegativeInfinity result}" // The example displays the following output: // PositiveInfinity: True // NegativeInfinity: False // // PositiveInfinity: False // NegativeInfinity: TrueModule Example8 Public Sub Main() Dim value1 As Single = 3.065E+35 Dim value2 As Single = 6.9375E+32 Dim result As Single = value1 * value2 Console.WriteLine("PositiveInfinity: {0}", Single.IsPositiveInfinity(result)) Console.WriteLine("NegativeInfinity: {0}", Single.IsNegativeInfinity(result)) Console.WriteLine() value1 = -value1 result = value1 * value2 Console.WriteLine("PositiveInfinity: {0}", Single.IsPositiveInfinity(result)) Console.WriteLine("NegativeInfinity: {0}", Single.IsNegativeInfinity(result)) End Sub End Module ' The example displays the following output: ' PositiveInfinity: True ' NegativeInfinity: False ' ' PositiveInfinity: False ' NegativeInfinity: TruePositiveInfinity, pozitif bir bölünenin sıfıra bölünmesi sonucu elde edilir ve NegativeInfinity, negatif bir bölünenin sıfıra bölünmesi sonucu elde edilir.
Kayan nokta işlemi geçersizse, işlemin sonucu NaNolur. Örneğin, NaN aşağıdaki işlemlerden elde edilir:
- Sıfıra, sıfırla bölme. Sıfıra bölmenin diğer durumlarının PositiveInfinity veya NegativeInfinityile sonuçlandığını unutmayın.
- Geçersiz girişlere sahip herhangi bir kayan nokta işlemi. Örneğin, negatif bir değerin karekökünü bulmaya çalışmak NaN döndürür.
- Değeri Single.NaNolan bağımsız değişkenle yapılan herhangi bir işlem.
Tip dönüştürmeleri
Single yapısı herhangi bir açık veya örtük dönüştürme işleci tanımlamaz; bunun yerine, dönüştürmeler derleyici tarafından uygulanır.
Aşağıdaki tabloda, diğer ilkel sayısal türlerdeki bir değerin bir değere Single olası dönüştürmeleri listelenmiştir. Ayrıca, dönüştürmenin genişleyip genişlemediğini veya daralıp daralmadığını ve elde edilen Single sonuç değerinin özgün değerden daha az hassas olma olasılığını gösterir.
| Dönüşümden | Genişleme/daralma | Kesinlik kaybı mümkün |
|---|---|---|
| Byte | Genişletme | Hayır |
| Decimal | Genişletme C#'ın bir cast operatörü gerektirdiğini unutmayın. |
Yes. Decimal 29 ondalık basamak duyarlığını destekler; Single 9'u destekler. |
| Double | Daralma; aralık dışı değerler Double.NegativeInfinity veya Double.PositiveInfinity değerine dönüştürülür. | Yes. Double 17 ondalık basamak hassasiyetini destekler; Single 9 ondalık basamağını destekler. |
| Int16 | Genişletme | Hayır |
| Int32 | Genişletme | Yes. Int32 10 ondalık basamak hassasiyetini destekler; Single 9 basamağını destekler. |
| Int64 | Genişletme | Yes. Int64, 19 ondalık basamak hassasiyetini destekler; Single, 9'unu destekler. |
| SByte | Genişletme | Hayır |
| UInt16 | Genişletme | Hayır |
| UInt32 | Genişletme | Yes. UInt32 10 ondalık basamak hassasiyetini destekler; Single 9 basamağını destekler. |
| UInt64 | Genişletme | Yes. Int64 20 ondalık basamak hassasiyet destekler; Single 9 destekler. |
Aşağıdaki örnek, diğer ilkel sayısal türlerin minimum veya maksimum değerlerini bir Single değerine dönüştürür.
using System;
public class Example4
{
public static void Main()
{
dynamic[] values = { Byte.MinValue, Byte.MaxValue, Decimal.MinValue,
Decimal.MaxValue, Double.MinValue, Double.MaxValue,
Int16.MinValue, Int16.MaxValue, Int32.MinValue,
Int32.MaxValue, Int64.MinValue, Int64.MaxValue,
SByte.MinValue, SByte.MaxValue, UInt16.MinValue,
UInt16.MaxValue, UInt32.MinValue, UInt32.MaxValue,
UInt64.MinValue, UInt64.MaxValue };
float sngValue;
foreach (var value in values)
{
if (value.GetType() == typeof(Decimal) ||
value.GetType() == typeof(Double))
sngValue = (float)value;
else
sngValue = value;
Console.WriteLine($"{value} ({value.GetType().Name}) --> {sngValue:R} ({sngValue.GetType().Name})");
}
}
}
// The example displays the following output:
// 0 (Byte) --> 0 (Single)
// 255 (Byte) --> 255 (Single)
// -79228162514264337593543950335 (Decimal) --> -7.92281625E+28 (Single)
// 79228162514264337593543950335 (Decimal) --> 7.92281625E+28 (Single)
// -1.79769313486232E+308 (Double) --> -Infinity (Single)
// 1.79769313486232E+308 (Double) --> Infinity (Single)
// -32768 (Int16) --> -32768 (Single)
// 32767 (Int16) --> 32767 (Single)
// -2147483648 (Int32) --> -2.14748365E+09 (Single)
// 2147483647 (Int32) --> 2.14748365E+09 (Single)
// -9223372036854775808 (Int64) --> -9.223372E+18 (Single)
// 9223372036854775807 (Int64) --> 9.223372E+18 (Single)
// -128 (SByte) --> -128 (Single)
// 127 (SByte) --> 127 (Single)
// 0 (UInt16) --> 0 (Single)
// 65535 (UInt16) --> 65535 (Single)
// 0 (UInt32) --> 0 (Single)
// 4294967295 (UInt32) --> 4.2949673E+09 (Single)
// 0 (UInt64) --> 0 (Single)
// 18446744073709551615 (UInt64) --> 1.84467441E+19 (Single)
open System
let values: obj list =
[ Byte.MinValue; Byte.MaxValue; Decimal.MinValue
Decimal.MaxValue; Double.MinValue; Double.MaxValue
Int16.MinValue; Int16.MaxValue; Int32.MinValue
Int32.MaxValue; Int64.MinValue; Int64.MaxValue
SByte.MinValue; SByte.MaxValue; UInt16.MinValue
UInt16.MaxValue; UInt32.MinValue; UInt32.MaxValue
UInt64.MinValue; UInt64.MaxValue ]
for value in values do
let sngValue =
match value with
| :? byte as v -> float32 v
| :? decimal as v -> float32 v
| :? double as v -> float32 v
| :? int16 as v -> float32 v
| :? int as v -> float32 v
| :? int64 as v -> float32 v
| :? int8 as v -> float32 v
| :? uint16 as v -> float32 v
| :? uint as v -> float32 v
| :? uint64 as v -> float32 v
| _ -> raise (NotImplementedException "Unknown Type")
printfn $"{value} ({value.GetType().Name}) --> {sngValue:R} ({sngValue.GetType().Name})"
// The example displays the following output:
// 0 (Byte) --> 0 (Single)
// 255 (Byte) --> 255 (Single)
// -79228162514264337593543950335 (Decimal) --> -7.92281625E+28 (Single)
// 79228162514264337593543950335 (Decimal) --> 7.92281625E+28 (Single)
// -1.79769313486232E+308 (Double) --> -Infinity (Single)
// 1.79769313486232E+308 (Double) --> Infinity (Single)
// -32768 (Int16) --> -32768 (Single)
// 32767 (Int16) --> 32767 (Single)
// -2147483648 (Int32) --> -2.14748365E+09 (Single)
// 2147483647 (Int32) --> 2.14748365E+09 (Single)
// -9223372036854775808 (Int64) --> -9.223372E+18 (Single)
// 9223372036854775807 (Int64) --> 9.223372E+18 (Single)
// -128 (SByte) --> -128 (Single)
// 127 (SByte) --> 127 (Single)
// 0 (UInt16) --> 0 (Single)
// 65535 (UInt16) --> 65535 (Single)
// 0 (UInt32) --> 0 (Single)
// 4294967295 (UInt32) --> 4.2949673E+09 (Single)
// 0 (UInt64) --> 0 (Single)
// 18446744073709551615 (UInt64) --> 1.84467441E+19 (Single)
Module Example5
Public Sub Main()
Dim values() As Object = {Byte.MinValue, Byte.MaxValue, Decimal.MinValue,
Decimal.MaxValue, Double.MinValue, Double.MaxValue,
Int16.MinValue, Int16.MaxValue, Int32.MinValue,
Int32.MaxValue, Int64.MinValue, Int64.MaxValue,
SByte.MinValue, SByte.MaxValue, UInt16.MinValue,
UInt16.MaxValue, UInt32.MinValue, UInt32.MaxValue,
UInt64.MinValue, UInt64.MaxValue}
Dim sngValue As Single
For Each value In values
If value.GetType() = GetType(Double) Then
sngValue = CSng(value)
Else
sngValue = value
End If
Console.WriteLine("{0} ({1}) --> {2:R} ({3})",
value, value.GetType().Name,
sngValue, sngValue.GetType().Name)
Next
End Sub
End Module
' The example displays the following output:
' 0 (Byte) --> 0 (Single)
' 255 (Byte) --> 255 (Single)
' -79228162514264337593543950335 (Decimal) --> -7.92281625E+28 (Single)
' 79228162514264337593543950335 (Decimal) --> 7.92281625E+28 (Single)
' -1.79769313486232E+308 (Double) --> -Infinity (Single)
' 1.79769313486232E+308 (Double) --> Infinity (Single)
' -32768 (Int16) --> -32768 (Single)
' 32767 (Int16) --> 32767 (Single)
' -2147483648 (Int32) --> -2.14748365E+09 (Single)
' 2147483647 (Int32) --> 2.14748365E+09 (Single)
' -9223372036854775808 (Int64) --> -9.223372E+18 (Single)
' 9223372036854775807 (Int64) --> 9.223372E+18 (Single)
' -128 (SByte) --> -128 (Single)
' 127 (SByte) --> 127 (Single)
' 0 (UInt16) --> 0 (Single)
' 65535 (UInt16) --> 65535 (Single)
' 0 (UInt32) --> 0 (Single)
' 4294967295 (UInt32) --> 4.2949673E+09 (Single)
' 0 (UInt64) --> 0 (Single)
' 18446744073709551615 (UInt64) --> 1.84467441E+19 (Single)
Ayrıca, Double değerleri sırasıyla Double.NaN, Double.PositiveInfinityve Double.NegativeInfinitySingle.NaN, Single.PositiveInfinityve Single.NegativeInfinitydönüştürülür.
Bazı sayısal türlerin değerinin Single bir değere dönüştürülmesinin doğruluk kaybına yol açabileceğini unutmayın. Örnek gösterildiği gibi, Decimal, Double, Int32, Int64, UInt32 ve UInt64 değerlerini Single değerlerine dönüştürürken hassasiyet kaybı mümkündür.
Bir Single değerinin Double'ye dönüştürülmesi, genişletme dönüşümüdür. Dönüşüm, Double türünün Single değeri için kesin bir temsil biçimi olmadığında hassasiyet kaybına neden olabilir.
Single değerinin Double haricinde herhangi bir ilkel sayısal veri türüne dönüştürülmesi daraltıcı bir dönüşüm olup C# dilinde bir dönüştürme operatörü veya Visual Basic dilinde bir dönüşüm yöntemi gerektirir. Hedef türün MinValue ve MaxValue özellikleri tarafından tanımlanan hedef veri türü aralığının dışında olan değerler, aşağıdaki tabloda gösterildiği gibi davranır.
| Hedef türü | Result |
|---|---|
| Herhangi bir tam sayı türü | Dönüştürme denetlenen bir bağlamda gerçekleşirse bir OverflowException istisnası. Dönüştürme denetimsiz bir bağlamda gerçekleşirse (C# dilinde varsayılan), dönüştürme işlemi başarılı olur ancak değer taşması meydana gelir. |
| Decimal | Bir OverflowException istisnası. |
Buna ek olarak, Single.NaN, Single.PositiveInfinityve Single.NegativeInfinity, denetlenmiş bağlamda tamsayı dönüştürmeleri için bir OverflowException istisnası fırlatır, ancak bu değerler kontrolsüz bir bağlamda tamsayılara dönüştürüldüğünde taşma meydana gelir. Decimaldönüştürmeleri için her zaman bir OverflowExceptionfırlatırlar. "Double'a dönüştürmeler için, sırasıyla, Double.NaN, Double.PositiveInfinityve Double.NegativeInfinity'e dönüştürülür."
Kesinlik kaybı, bir Single değerinin başka bir sayısal türe dönüştürülmesinden kaynaklanabilir. Büyük olmayan tam sayı Single değerlerini dönüştürme durumunda, örneğin çıktısında gösterildiği gibi, kesirli bileşen kaybolur; Single değeri ya (Visual Basic'te olduğu gibi) yuvarlandığında ya da (C# ve F#'ta olduğu gibi) kesildiğinde. Decimal değerlerine dönüşümler için, Single değerinin hedef veri türünde tam bir temsili olmayabilir.
Aşağıdaki örnek, bir dizi Single değerini diğer birkaç sayısal türe dönüştürür. Visual Basic (varsayılan), C# (çünkü checked anahtar kelimesi), ve F# (çünkü open Checked ifadesi) içinde dönüşümler denetimli bir bağlamda gerçekleşir. Örnekten elde edilen çıktı, hem işaretli hem de işaretsiz bağlamlarda yapılan dönüştürmelerin sonucunu gösterir. Visual Basic'te /removeintchecks+ derleyici anahtarıyla derleyerek, C# dilinde checked ifadesini yorum satırına alarak ve F# dilinde open Checked ifadesini yorum satırına alarak denetlenmeyen bir bağlamda dönüşüm gerçekleştirebilirsiniz.
float[] values = { Single.MinValue, -67890.1234f, -12345.6789f,
12345.6789f, 67890.1234f, Single.MaxValue,
Single.NaN, Single.PositiveInfinity,
Single.NegativeInfinity };
checked
{
foreach (var value in values)
{
try
{
Int64 lValue = (long)value;
Console.WriteLine($"{value} ({value.GetType().Name}) --> {lValue} (0x{lValue:X16}) ({lValue.GetType().Name})");
}
catch (OverflowException)
{
Console.WriteLine($"Unable to convert {value} to Int64.");
}
try
{
UInt64 ulValue = (ulong)value;
Console.WriteLine($"{value} ({value.GetType().Name}) --> {ulValue} (0x{ulValue:X16}) ({ulValue.GetType().Name})");
}
catch (OverflowException)
{
Console.WriteLine($"Unable to convert {value} to UInt64.");
}
try
{
Decimal dValue = (decimal)value;
Console.WriteLine($"{value} ({value.GetType().Name}) --> {dValue} ({dValue.GetType().Name})");
}
catch (OverflowException)
{
Console.WriteLine($"Unable to convert {value} to Decimal.");
}
Double dblValue = value;
Console.WriteLine($"{value} ({value.GetType().Name}) --> {dblValue} ({dblValue.GetType().Name})");
Console.WriteLine();
}
}
// The example displays the following output for conversions performed
// in a checked context:
// Unable to convert -3.402823E+38 to Int64.
// Unable to convert -3.402823E+38 to UInt64.
// Unable to convert -3.402823E+38 to Decimal.
// -3.402823E+38 (Single) --> -3.40282346638529E+38 (Double)
//
// -67890.13 (Single) --> -67890 (0xFFFFFFFFFFFEF6CE) (Int64)
// Unable to convert -67890.13 to UInt64.
// -67890.13 (Single) --> -67890.12 (Decimal)
// -67890.13 (Single) --> -67890.125 (Double)
//
// -12345.68 (Single) --> -12345 (0xFFFFFFFFFFFFCFC7) (Int64)
// Unable to convert -12345.68 to UInt64.
// -12345.68 (Single) --> -12345.68 (Decimal)
// -12345.68 (Single) --> -12345.6787109375 (Double)
//
// 12345.68 (Single) --> 12345 (0x0000000000003039) (Int64)
// 12345.68 (Single) --> 12345 (0x0000000000003039) (UInt64)
// 12345.68 (Single) --> 12345.68 (Decimal)
// 12345.68 (Single) --> 12345.6787109375 (Double)
//
// 67890.13 (Single) --> 67890 (0x0000000000010932) (Int64)
// 67890.13 (Single) --> 67890 (0x0000000000010932) (UInt64)
// 67890.13 (Single) --> 67890.12 (Decimal)
// 67890.13 (Single) --> 67890.125 (Double)
//
// Unable to convert 3.402823E+38 to Int64.
// Unable to convert 3.402823E+38 to UInt64.
// Unable to convert 3.402823E+38 to Decimal.
// 3.402823E+38 (Single) --> 3.40282346638529E+38 (Double)
//
// Unable to convert NaN to Int64.
// Unable to convert NaN to UInt64.
// Unable to convert NaN to Decimal.
// NaN (Single) --> NaN (Double)
//
// Unable to convert ∞ to Int64.
// Unable to convert ∞ to UInt64.
// Unable to convert ∞ to Decimal.
// ∞ (Single) --> ∞ (Double)
//
// Unable to convert -∞ to Int64.
// Unable to convert -∞ to UInt64.
// Unable to convert -∞ to Decimal.
// -∞ (Single) --> -∞ (Double)
open System
open Checked
let values =
[ Single.MinValue; -67890.1234f; -12345.6789f
12345.6789f; 67890.1234f; Single.MaxValue
Single.NaN; Single.PositiveInfinity
Single.NegativeInfinity ]
for value in values do
try
let lValue = int64 value
printfn $"{value} ({value.GetType().Name}) --> {lValue} (0x{lValue:X16}) ({lValue.GetType().Name})"
with :? OverflowException ->
printfn $"Unable to convert {value} to Int64."
try
let ulValue = uint64 value
printfn $"{value} ({value.GetType().Name}) --> {ulValue} (0x{ulValue:X16}) ({ulValue.GetType().Name})"
with :? OverflowException ->
printfn $"Unable to convert {value} to UInt64."
try
let dValue = decimal value
printfn $"{value} ({value.GetType().Name}) --> {dValue} ({dValue.GetType().Name})"
with :? OverflowException ->
printfn $"Unable to convert {value} to Decimal."
let dblValue = double value
printfn $"{value} ({value.GetType().Name}) --> {dblValue} ({dblValue.GetType().Name})\n"
// The example displays the following output for conversions performed
// in a checked context:
// Unable to convert -3.402823E+38 to Int64.
// Unable to convert -3.402823E+38 to UInt64.
// Unable to convert -3.402823E+38 to Decimal.
// -3.402823E+38 (Single) --> -3.40282346638529E+38 (Double)
//
// -67890.13 (Single) --> -67890 (0xFFFFFFFFFFFEF6CE) (Int64)
// Unable to convert -67890.13 to UInt64.
// -67890.13 (Single) --> -67890.12 (Decimal)
// -67890.13 (Single) --> -67890.125 (Double)
//
// -12345.68 (Single) --> -12345 (0xFFFFFFFFFFFFCFC7) (Int64)
// Unable to convert -12345.68 to UInt64.
// -12345.68 (Single) --> -12345.68 (Decimal)
// -12345.68 (Single) --> -12345.6787109375 (Double)
//
// 12345.68 (Single) --> 12345 (0x0000000000003039) (Int64)
// 12345.68 (Single) --> 12345 (0x0000000000003039) (UInt64)
// 12345.68 (Single) --> 12345.68 (Decimal)
// 12345.68 (Single) --> 12345.6787109375 (Double)
//
// 67890.13 (Single) --> 67890 (0x0000000000010932) (Int64)
// 67890.13 (Single) --> 67890 (0x0000000000010932) (UInt64)
// 67890.13 (Single) --> 67890.12 (Decimal)
// 67890.13 (Single) --> 67890.125 (Double)
//
// Unable to convert 3.402823E+38 to Int64.
// Unable to convert 3.402823E+38 to UInt64.
// Unable to convert 3.402823E+38 to Decimal.
// 3.402823E+38 (Single) --> 3.40282346638529E+38 (Double)
//
// Unable to convert NaN to Int64.
// Unable to convert NaN to UInt64.
// Unable to convert NaN to Decimal.
// NaN (Single) --> NaN (Double)
//
// Unable to convert Infinity to Int64.
// Unable to convert Infinity to UInt64.
// Unable to convert Infinity to Decimal.
// Infinity (Single) --> Infinity (Double)
//
// Unable to convert -Infinity to Int64.
// Unable to convert -Infinity to UInt64.
// Unable to convert -Infinity to Decimal.
// -Infinity (Single) --> -Infinity (Double)
// The example displays the following output for conversions performed
// in an unchecked context:
// -3.402823E+38 (Single) --> -9223372036854775808 (0x8000000000000000) (Int64)
// -3.402823E+38 (Single) --> 9223372036854775808 (0x8000000000000000) (UInt64)
// Unable to convert -3.402823E+38 to Decimal.
// -3.402823E+38 (Single) --> -3.40282346638529E+38 (Double)
//
// -67890.13 (Single) --> -67890 (0xFFFFFFFFFFFEF6CE) (Int64)
// -67890.13 (Single) --> 18446744073709483726 (0xFFFFFFFFFFFEF6CE) (UInt64)
// -67890.13 (Single) --> -67890.12 (Decimal)
// -67890.13 (Single) --> -67890.125 (Double)
//
// -12345.68 (Single) --> -12345 (0xFFFFFFFFFFFFCFC7) (Int64)
// -12345.68 (Single) --> 18446744073709539271 (0xFFFFFFFFFFFFCFC7) (UInt64)
// -12345.68 (Single) --> -12345.68 (Decimal)
// -12345.68 (Single) --> -12345.6787109375 (Double)
//
// 12345.68 (Single) --> 12345 (0x0000000000003039) (Int64)
// 12345.68 (Single) --> 12345 (0x0000000000003039) (UInt64)
// 12345.68 (Single) --> 12345.68 (Decimal)
// 12345.68 (Single) --> 12345.6787109375 (Double)
//
// 67890.13 (Single) --> 67890 (0x0000000000010932) (Int64)
// 67890.13 (Single) --> 67890 (0x0000000000010932) (UInt64)
// 67890.13 (Single) --> 67890.12 (Decimal)
// 67890.13 (Single) --> 67890.125 (Double)
//
// 3.402823E+38 (Single) --> -9223372036854775808 (0x8000000000000000) (Int64)
// 3.402823E+38 (Single) --> 0 (0x0000000000000000) (UInt64)
// Unable to convert 3.402823E+38 to Decimal.
// 3.402823E+38 (Single) --> 3.40282346638529E+38 (Double)
//
// NaN (Single) --> -9223372036854775808 (0x8000000000000000) (Int64)
// NaN (Single) --> 0 (0x0000000000000000) (UInt64)
// Unable to convert NaN to Decimal.
// NaN (Single) --> NaN (Double)
//
// Infinity (Single) --> -9223372036854775808 (0x8000000000000000) (Int64)
// Infinity (Single) --> 0 (0x0000000000000000) (UInt64)
// Unable to convert Infinity to Decimal.
// Infinity (Single) --> Infinity (Double)
//
// -Infinity (Single) --> -9223372036854775808 (0x8000000000000000) (Int64)
// -Infinity (Single) --> 9223372036854775808 (0x8000000000000000) (UInt64)
// Unable to convert -Infinity to Decimal.
// -Infinity (Single) --> -Infinity (Double)
Module Example6
Public Sub Main()
Dim values() As Single = {Single.MinValue, -67890.1234, -12345.6789,
12345.6789, 67890.1234, Single.MaxValue,
Single.NaN, Single.PositiveInfinity,
Single.NegativeInfinity}
For Each value In values
Try
Dim lValue As Long = CLng(value)
Console.WriteLine("{0} ({1}) --> {2} (0x{2:X16}) ({3})",
value, value.GetType().Name,
lValue, lValue.GetType().Name)
Catch e As OverflowException
Console.WriteLine("Unable to convert {0} to Int64.", value)
End Try
Try
Dim ulValue As UInt64 = CULng(value)
Console.WriteLine("{0} ({1}) --> {2} (0x{2:X16}) ({3})",
value, value.GetType().Name,
ulValue, ulValue.GetType().Name)
Catch e As OverflowException
Console.WriteLine("Unable to convert {0} to UInt64.", value)
End Try
Try
Dim dValue As Decimal = CDec(value)
Console.WriteLine("{0} ({1}) --> {2} ({3})",
value, value.GetType().Name,
dValue, dValue.GetType().Name)
Catch e As OverflowException
Console.WriteLine("Unable to convert {0} to Decimal.", value)
End Try
Dim dblValue As Double = value
Console.WriteLine("{0} ({1}) --> {2} ({3})",
value, value.GetType().Name,
dblValue, dblValue.GetType().Name)
Console.WriteLine()
Next
End Sub
End Module
' The example displays the following output for conversions performed
' in a checked context:
' Unable to convert -3.402823E+38 to Int64.
' Unable to convert -3.402823E+38 to UInt64.
' Unable to convert -3.402823E+38 to Decimal.
' -3.402823E+38 (Single) --> -3.40282346638529E+38 (Double)
'
' -67890.13 (Single) --> -67890 (0xFFFFFFFFFFFEF6CE) (Int64)
' Unable to convert -67890.13 to UInt64.
' -67890.13 (Single) --> -67890.12 (Decimal)
' -67890.13 (Single) --> -67890.125 (Double)
'
' -12345.68 (Single) --> -12346 (0xFFFFFFFFFFFFCFC6) (Int64)
' Unable to convert -12345.68 to UInt64.
' -12345.68 (Single) --> -12345.68 (Decimal)
' -12345.68 (Single) --> -12345.6787109375 (Double)
'
' 12345.68 (Single) --> 12346 (0x000000000000303A) (Int64)
' 12345.68 (Single) --> 12346 (0x000000000000303A) (UInt64)
' 12345.68 (Single) --> 12345.68 (Decimal)
' 12345.68 (Single) --> 12345.6787109375 (Double)
'
' 67890.13 (Single) --> 67890 (0x0000000000010932) (Int64)
' 67890.13 (Single) --> 67890 (0x0000000000010932) (UInt64)
' 67890.13 (Single) --> 67890.12 (Decimal)
' 67890.13 (Single) --> 67890.125 (Double)
'
' Unable to convert 3.402823E+38 to Int64.
' Unable to convert 3.402823E+38 to UInt64.
' Unable to convert 3.402823E+38 to Decimal.
' 3.402823E+38 (Single) --> 3.40282346638529E+38 (Double)
'
' Unable to convert NaN to Int64.
' Unable to convert NaN to UInt64.
' Unable to convert NaN to Decimal.
' NaN (Single) --> NaN (Double)
'
' Unable to convert ∞ to Int64.
' Unable to convert ∞ to UInt64.
' Unable to convert ∞ to Decimal.
' ∞ (Single) --> ∞ (Double)
'
' Unable to convert -∞ to Int64.
' Unable to convert -∞ to UInt64.
' Unable to convert -∞ to Decimal.
' -∞ (Single) --> -∞ (Double)
Sayısal türlerin dönüştürülmesi hakkında daha fazla bilgi için .NET'te Tür Dönüştürme ve Tür Dönüştürme Tabloları bölümlerine bakın.
Kayan nokta işlevselliği
Single yapısı ve ilgili türler, aşağıdaki işlem kategorilerini gerçekleştirmek için yöntemler sağlar:
değerleri karşılaştırması. İki Equals değerin eşit olup olmadığını belirlemek için Single yöntemini veya iki değer arasındaki ilişkiyi belirlemek için CompareTo yöntemini çağırabilirsiniz.
Single yapısı tam bir karşılaştırma işleçleri kümesini de destekler. Örneğin, eşitlik veya eşitsizlik için testler yapabilir ya da bir değerin diğer değere eşit ya da ondan büyük olup olmadığını belirleyebilirsiniz. Eğer işleçlerden biri Double ise, Single değeri karşılaştırma yapılmadan önce Double'ye dönüştürülür. Eğer işlemcilerden biri tamsayı tipindeyse, karşılaştırma yapılmadan önce Single'e dönüştürülür. Bunlar genişletme dönüştürmeleri olsa da, kesinlik kaybı içerebilir.
Warning
Duyarlık farklılıkları nedeniyle, eşit olmasını beklediğiniz iki Single değeri eşit olmayabilir ve bu da karşılaştırmanın sonucunu etkiler. İki değerini karşılaştırma hakkında daha fazla bilgi için Single bölümüne bakın.
Ayrıca, bu özel değerleri test etmek için IsNaN, IsInfinity, IsPositiveInfinityve IsNegativeInfinity yöntemlerini çağırabilirsiniz.
Matematiksel işlemler. Genel aritmetik işlemler, örneğin toplama, çıkarma, çarpma ve bölme, dil derleyicileri ve Ortak Ara Dil (CIL) talimatları tarafından Single yöntemler yerine uygulanır. Matematiksel bir işlemin diğer işleçlerinden biri bir Double ise, Single, işlemi gerçekleştirmeden önce bir Double'ye dönüştürülür ve işlemin sonucu da bir Double değeri olur. Eğer diğer işlenen bir tam sayı türündeyse, işleme başlamadan önce Single türüne dönüştürülür ve işlemin sonucu da bir Single değeridir.
Diğer matematiksel işlemleri,
staticsınıfındakiSharedyöntemlerini (System.Math Visual Basic'te) çağırarak gerçekleştirebilirsiniz. Bunlar, aritmetik için yaygın olarak kullanılan ek yöntemleri (örneğin Math.Abs, Math.Sign, ve Math.Sqrt), geometri (örneğin Math.Cos ve Math.Sin) ve kalkülüs (örneğin Math.Log) içerir. Tüm durumlarda Single değeri Double değerine dönüştürülür.Ayrıca, Single bir değerdeki tek tek bitleri de işleyebilirsiniz. BitConverter.GetBytes(Single) yöntemi bit desenini bayt dizisinde döndürür. Bu bayt dizisini BitConverter.ToInt32 yöntemine geçirerek, 32 bitlik bir tamsayıda Single değerinin bit desenini de koruyabilirsiniz.
Yuvarlama. Yuvarlama, genellikle, kayan nokta gösterimi ve kesinlik sorunlarının neden olduğu değerler arasındaki farkların etkisini azaltmak için bir teknik olarak kullanılır. Single yöntemini çağırarak Math.Round değeri yuvarlayabilirsiniz. Ancak, Single değeri, yöntem çağrılmadan önce Double olarak dönüştürüldüğünü ve dönüşümün hassasiyet kaybına yol açabileceğini unutmayın.
Biçimlendirme. Bir Single değerini kendi string temsiline dönüştürmek için ToString metodunu çağırabilir veya bileşik biçimlendirme özelliğini kullanabilirsiniz. Biçim dizelerinin kayan nokta değerlerinin dize gösterimini nasıl denetlediğini öğrenmek için bkz. Standart Sayısal Biçim Dizeleri ve Özel Sayısal Biçim Dizeleri.
Dizeleri ayrıştırma. Bir kayan nokta değerinin dize temsilini Single değerine dönüştürebilirsiniz, bunun için Parse veya TryParse yöntemini çağırabilirsiniz. Ayrıştırma işlemi başarısız olursa, Parse yöntemi bir özel durum oluştururken, TryParse yöntemi
falsedöndürür.Tür dönüştürme. Single yapısı, iki standart .NET veri türü arasında dönüştürmeyi destekleyen IConvertible arabirimi için açık bir arabirim uygulaması sağlar. Dil derleyicileri, Double değerlerinin Single değerlerine dönüştürülmesi dışında, diğer tüm standart sayısal türler için değerlerin örtük dönüştürülmesini de destekler. Herhangi bir standart sayısal tür değeri, Double türünün dışında bir Single türüne dönüştürülmesi genişletici bir dönüşümdür ve buna bir dönüştürme operatörü veya dönüşüm yöntemi kullanımı gerekmez.
Ancak, 32-bit ve 64-bit tamsayı değerlerinin dönüşümü hassasiyet kaybına neden olabilir. Aşağıdaki tabloda 32 bit, 64 bit ve Double türler için duyarlık farklılıkları listelenmiştir:
Türü En yüksek hassasiyet (ondalık basamaklar) Dahili hassasiyet (ondalık basamaklar) Double 15 17 Int32 ve UInt32 10 10 Int64 ve UInt64 19 19 Single 7 9 Hassasiyet sorunu, en sık Single değerleri Double değerlere dönüştürüldüğünde etkiler. Aşağıdaki örnekte, aynı bölme işlemleriyle üretilen iki değer eşit değildir çünkü değerlerden biri tek-precision kayan nokta değeri olup bir Double değerine dönüştürülmüştür.
Double value1 = 1 / 3.0; Single sValue2 = 1 / 3.0f; Double value2 = (Double)sValue2; Console.WriteLine($"{value1:R} = {value2:R}: {value1.Equals(value2)}"); // The example displays the following output on .NET: // 0.3333333333333333 = 0.3333333432674408: Falselet value1 = 1. / 3. let sValue2 = 1f / 3f let value2 = double sValue2 printfn $"{value1:R} = {value2:R}: {value1.Equals value2}" // The example displays the following output: // 0.33333333333333331 = 0.3333333432674408: FalseDim value1 As Double = 1 / 3 Dim sValue2 As Single = 1 / 3 Dim value2 As Double = CDbl(sValue2) Console.WriteLine("{0} = {1}: {2}", value1, value2, value1.Equals(value2)) ' The example displays the following output: ' 0.3333333333333333 = 0.3333333432674408: False
Alanlar
| Name | Description |
|---|---|
| E |
e sabiti tarafından belirtilen doğal logaritmik tabanı temsil eder. |
| Epsilon |
Sıfırdan büyük en küçük pozitif Single değeri temsil eder. Bu alan sabittir. |
| MaxValue |
mümkün olan en büyük değerini Singletemsil eder. Bu alan sabittir. |
| MinValue |
mümkün olan en küçük değerini Singletemsil eder. Bu alan sabittir. |
| NaN |
Bir sayıyı ( |
| NegativeInfinity |
Negatif sonsuzluğu temsil eder. Bu alan sabittir. |
| NegativeZero |
Negatif sıfır sayısını (-0) temsil eder. |
| Pi |
Bir dairenin çevresinin, π sabiti tarafından belirtilen çapına oranını temsil eder. |
| PositiveInfinity |
Pozitif sonsuzluğu temsil eder. Bu alan sabittir. |
| Tau |
τ sabiti tarafından belirtilen radyan sayısını tek seferde temsil eder. |
Yöntemler
| Name | Description |
|---|---|
| Abs(Single) |
Bir değerin mutlak değerini hesaplar. |
| Acos(Single) |
Bir değerin ark kosinüsünü hesaplar. |
| Acosh(Single) |
Bir değerin hiperbolik ark kosinüsünü hesaplar. |
| AcosPi(Single) |
Bir değerin ark kosinüsünü hesaplar ve sonucu ile |
| Asin(Single) |
Bir değerin ark sinüsünü hesaplar. |
| Asinh(Single) |
Bir değerin hiperbolik ark sinüsünü hesaplar. |
| AsinPi(Single) |
Bir değerin ark sinüsünü hesaplar ve sonucu ile |
| Atan(Single) |
Bir değerin yay tanjantını hesaplar. |
| Atan2(Single, Single) |
İki değerin bölümünün ark tanjantını hesaplar. |
| Atan2Pi(Single, Single) |
İki değerin bölümünün arc tanjantını hesaplar ve sonucu ile |
| Atanh(Single) |
Bir değerin hiperbolik ark tanjantını hesaplar. |
| AtanPi(Single) |
Bir değerin yay tanjantını hesaplar ve sonucu pi'ye böler. |
| BitDecrement(Single) |
Belirtilen değerden daha azını karşılaştıran en büyük değeri döndürür. |
| BitIncrement(Single) |
Belirtilen değerden büyük olan en küçük değeri döndürür. |
| Cbrt(Single) |
Bir değerin küp kökünü hesaplar. |
| Ceiling(Single) |
Bir değerin tavanını hesaplar. |
| Clamp(Single, Single, Single) |
Bir değeri kapsayıcı en düşük ve en yüksek değere kelepçeler. |
| ClampNative(Single, Single, Single) |
ve |
| CompareTo(Object) |
Bu örneği belirtilen bir nesneyle karşılaştırır ve bu örneğin değerinin belirtilen nesnenin değerinden küçük, buna eşit veya ondan büyük olup olmadığını gösteren bir tamsayı döndürür. |
| CompareTo(Single) |
Bu örneği belirtilen tek duyarlıklı kayan noktalı sayıyla karşılaştırır ve bu örneğin değerinin belirtilen tek duyarlıklı kayan nokta sayısının değerinden küçük, buna eşit veya ondan büyük olup olmadığını gösteren bir tamsayı döndürür. |
| ConvertToInteger<TInteger>(Single) |
Taşmada doygunluk kullanarak bir değeri belirtilen tamsayı türüne dönüştürür |
| ConvertToIntegerNative<TInteger>(Single) |
Taşmada platforma özgü davranışı kullanarak bir değeri belirtilen tamsayı türüne dönüştürür. |
| CopySign(Single, Single) |
Bir değerin işaretini başka bir değerin işaretine kopyalar. |
| Cos(Single) |
Bir değerin kosinüsünü hesaplar. |
| Cosh(Single) |
Bir değerin hiperbolik kosinüsünü hesaplar. |
| CosPi(Single) |
tarafından |
| CreateChecked<TOther>(TOther) |
Geçerli türün bir örneğini bir değerden oluşturur ve geçerli türün temsil edilebilir aralığının dışında kalan değerler için taşma özel durumu oluşturur. |
| CreateSaturating<TOther>(TOther) |
Bir değerden geçerli türün bir örneğini oluşturur ve geçerli türün temsil edilebilir aralığının dışında kalan tüm değerleri doygun hale getirir. |
| CreateTruncating<TOther>(TOther) |
Geçerli türün bir örneğini bir değerden oluşturur ve geçerli türün temsil edilebilir aralığının dışında kalan değerleri kesebilir. |
| DegreesToRadians(Single) |
Verilen değeri derecelerden radyana dönüştürür. |
| Equals(Object) |
Bu örneğin belirtilen bir nesneye eşit olup olmadığını gösteren bir değer döndürür. |
| Equals(Single) |
Bu örneğin ve belirtilen Single nesnenin aynı değeri temsil edip etmediğini belirten bir değer döndürür. |
| Exp(Single) |
Belirli bir güce yükseltilmiş hesaplamalar |
| Exp10(Single) |
Belirli bir güce yükseltilmiş hesaplamalar |
| Exp10M1(Single) |
|
| Exp2(Single) |
Belirli bir güce yükseltilmiş hesaplamalar |
| Exp2M1(Single) |
|
| ExpM1(Single) |
|
| Floor(Single) |
Bir değerin tabanını hesaplar. |
| FusedMultiplyAdd(Single, Single, Single) |
Üç değerin birleşik çarpımını hesaplar. |
| GetHashCode() |
Bu örneğin karma kodunu döndürür. |
| GetTypeCode() | |
| Hypot(Single, Single) |
Dik açılı üçgendeki kısa kenarların uzunluklarını temsil eden iki değer verilen hipotenüs hesaplar. |
| Ieee754Remainder(Single, Single) |
IEEE 754 tarafından belirtilen iki değerin geri kalanını hesaplar. |
| ILogB(Single) |
Bir değerin tamsayı logaritmasını hesaplar. |
| IsEvenInteger(Single) |
Bir değerin çift tamsayı sayıyı temsil eder olup olmadığını belirler. |
| IsFinite(Single) |
Belirtilen değerin sonlu (sıfır, normal altı veya normal) olup olmadığını belirler. |
| IsInfinity(Single) |
Belirtilen sayının negatif mi yoksa pozitif sonsuz mu olduğunu belirten bir değer döndürür. |
| IsInteger(Single) |
Bir değerin bir tamser değeri temsil eder olup olmadığını belirler. |
| IsNaN(Single) |
Belirtilen değerin sayı (NaN) olup olmadığını gösteren bir değer döndürür. |
| IsNegative(Single) |
Belirtilen değerin negatif olup olmadığını belirler. |
| IsNegativeInfinity(Single) |
Belirtilen sayının negatif sonsuz olarak değerlendirilip değerlendirilmediğini belirten bir değer döndürür. |
| IsNormal(Single) |
Belirtilen değerin normal olup olmadığını belirler. |
| IsOddInteger(Single) |
Bir değerin tek bir tamsayı sayısını temsil ediyor olup olmadığını belirler. |
| IsPositive(Single) |
Bir değerin pozitif olup olmadığını belirler. |
| IsPositiveInfinity(Single) |
Belirtilen sayının pozitif sonsuz olarak değerlendirilip değerlendirilmediğini belirten bir değer döndürür. |
| IsPow2(Single) |
Bir değerin ikinin gücü olup olmadığını belirler. |
| IsRealNumber(Single) |
Bir değerin gerçek bir sayıyı temsil ediyor olup olmadığını belirler. |
| IsSubnormal(Single) |
Belirtilen değerin normalin altında olup olmadığını belirler. |
| Lerp(Single, Single, Single) |
Verilen ağırlığa göre iki değer arasında doğrusal ilişkilendirme gerçekleştirir. |
| Log(Single, Single) |
Belirtilen tabandaki bir değerin logaritması hesaplanır. |
| Log(Single) |
Bir değerin doğal ( |
| Log10(Single) |
Bir değerin 10 tabanındaki logaritması hesaplar. |
| Log10P1(Single) |
Bir değerin ve bir değerin 10 tabanındaki logaritması hesaplar. |
| Log2(Single) |
Bir değerin 2. günlüğünü hesaplar. |
| Log2P1(Single) |
Bir değerin ve bir değerin 2 tabanındaki logaritması hesaplar. |
| LogP1(Single) |
Bir değerin ve bir değerin doğal ( |
| Max(Single, Single) |
daha büyük olan iki değeri işlemle karşılaştırır. |
| MaxMagnitude(Single, Single) |
daha büyük olan iki değeri işlemle karşılaştırır. |
| MaxMagnitudeNumber(Single, Single) |
İki değeri, daha büyük bir büyüklüğe sahip olan ve giriş ise diğer değeri döndüren işlemle karşılaştırır |
| MaxNative(Single, Single) |
ve |
| MaxNumber(Single, Single) |
daha büyük olan ve giriş ise diğer değeri döndüren iki değeri işlemle karşılaştırır |
| Min(Single, Single) |
daha az olan iki değeri işlemle karşılaştırır. |
| MinMagnitude(Single, Single) |
daha az olan iki değeri işlemle karşılaştırır. |
| MinMagnitudeNumber(Single, Single) |
daha az büyüklüğe sahip olan ve giriş ise diğer değeri döndüren iki değeri işlemle karşılaştırır |
| MinNative(Single, Single) |
ve |
| MinNumber(Single, Single) |
daha küçük olan ve giriş ise diğer değeri döndüren iki değeri işlemle karşılaştırır |
| MultiplyAddEstimate(Single, Single, Single) |
( |
| Parse(ReadOnlySpan<Byte>, IFormatProvider) |
UTF-8 karakterlik bir aralığı bir değere ayrıştırıyor. |
| Parse(ReadOnlySpan<Byte>, NumberStyles, IFormatProvider) |
UTF-8 karakterlik bir aralığı bir değere ayrıştırıyor. |
| Parse(ReadOnlySpan<Char>, IFormatProvider) |
Bir karakter aralığını bir değere ayrıştırıyor. |
| Parse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider) |
Belirli bir stilde ve kültüre özgü biçimdeki bir sayının dize gösterimini içeren karakter aralığını tek duyarlıklı kayan noktalı sayı eşdeğerine dönüştürür. |
| Parse(String, IFormatProvider) |
Belirli bir kültüre özgü biçimdeki bir sayının dize gösterimini tek duyarlıklı kayan noktalı sayı eşdeğerine dönüştürür. |
| Parse(String, NumberStyles, IFormatProvider) |
Belirli bir stilde ve kültüre özgü biçimdeki bir sayının dize gösterimini tek duyarlıklı kayan noktalı sayı eşdeğerine dönüştürür. |
| Parse(String, NumberStyles) |
Belirtilen stildeki bir sayının dize gösterimini tek duyarlıklı kayan noktalı sayı eşdeğerine dönüştürür. |
| Parse(String) |
Bir sayının dize gösterimini tek duyarlıklı kayan noktalı sayı eşdeğerine dönüştürür. |
| Pow(Single, Single) |
Belirli bir güce yükseltilmiş bir değeri hesaplar. |
| RadiansToDegrees(Single) |
Verilen değeri radyandan dereceye dönüştürür. |
| ReciprocalEstimate(Single) |
Bir değerin karşılıklı tahminini hesaplar. |
| ReciprocalSqrtEstimate(Single) |
Bir değerin karşılıklı karekökünün tahminini hesaplar. |
| RootN(Single, Int32) |
Bir değerin n. kökünü hesaplar. |
| Round(Single, Int32, MidpointRounding) |
Varsayılan yuvarlama modunu (ToEven) kullanarak değeri belirtilen sayıda kesirli basamağı yuvarlar. |
| Round(Single, Int32) |
Varsayılan yuvarlama modunu (ToEven) kullanarak değeri belirtilen sayıda kesirli basamağı yuvarlar. |
| Round(Single, MidpointRounding) |
Belirtilen yuvarlama modunu kullanarak bir değeri en yakın tamsayıya yuvarlar. |
| Round(Single) |
Varsayılan yuvarlama modunu (ToEven) kullanarak bir değeri en yakın tamsayıya yuvarlar. |
| ScaleB(Single, Int32) |
Bir değerin çarpımını ve belirtilen güce yükseltilmiş taban-radiksini hesaplar. |
| Sign(Single) |
Bir değerin işaretini hesaplar. |
| Sin(Single) |
Bir değerin sinüsünü hesaplar. |
| SinCos(Single) |
Bir değerin sinüsünü ve kosinüsünü hesaplar. |
| SinCosPi(Single) |
Bir değerin sinüsünü ve kosinüsünü hesaplar. |
| Sinh(Single) |
Bir değerin hiperbolik sinüsünü hesaplar. |
| SinPi(Single) |
ile |
| Sqrt(Single) |
Bir değerin karekökünü hesaplar. |
| Tan(Single) |
Bir değerin tanjantını hesaplar. |
| Tanh(Single) |
Bir değerin hiperbolik tanjantını hesaplar. |
| TanPi(Single) |
tarafından |
| ToString() |
Bu örneğin sayısal değerini eşdeğer dize gösterimine dönüştürür. |
| ToString(IFormatProvider) |
Belirtilen kültüre özgü biçim bilgilerini kullanarak bu örneğin sayısal değerini eşdeğer dize gösterimine dönüştürür. |
| ToString(String, IFormatProvider) |
Belirtilen biçim ve kültüre özgü biçim bilgilerini kullanarak bu örneğin sayısal değerini eşdeğer dize gösterimine dönüştürür. |
| ToString(String) |
Belirtilen biçimi kullanarak bu örneğin sayısal değerini eşdeğer dize gösterimine dönüştürür. |
| Truncate(Single) |
Bir değeri kısaltılır. |
| TryFormat(Span<Byte>, Int32, ReadOnlySpan<Char>, IFormatProvider) |
Geçerli örneğin değerini UTF-8 olarak sağlanan bayt aralığına biçimlendirmeye çalışır. |
| TryFormat(Span<Char>, Int32, ReadOnlySpan<Char>, IFormatProvider) |
Geçerli kayan sayı örneğinin değerini sağlanan karakter aralığına biçimlendirmeye çalışır. |
| TryParse(ReadOnlySpan<Byte>, IFormatProvider, Single) |
UTF-8 karakterlik bir aralığı bir değere ayrıştırmaya çalışır. |
| TryParse(ReadOnlySpan<Byte>, NumberStyles, IFormatProvider, Single) |
UTF-8 karakterlik bir aralığı bir değere ayrıştırmaya çalışır. |
| TryParse(ReadOnlySpan<Byte>, Single) |
Bir sayının dize gösterimini içeren UTF-8 karakter aralığını tek duyarlıklı kayan noktalı sayı eşdeğerine dönüştürmeye çalışır. |
| TryParse(ReadOnlySpan<Char>, IFormatProvider, Single) |
Bir karakter aralığını bir değere ayrıştırmaya çalışır. |
| TryParse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider, Single) |
Belirli bir stilde ve kültüre özgü biçimdeki bir sayının span gösterimini tek duyarlıklı kayan noktalı sayı eşdeğerine dönüştürür. Dönüş değeri, dönüştürmenin başarılı mı yoksa başarısız mı olduğunu gösterir. |
| TryParse(ReadOnlySpan<Char>, Single) |
Karakter aralığındaki bir sayının dize gösterimini tek duyarlıklı kayan noktalı sayı eşdeğerine dönüştürür. Dönüş değeri, dönüştürmenin başarılı mı yoksa başarısız mı olduğunu gösterir. |
| TryParse(String, IFormatProvider, Single) |
Bir dizeyi bir değere ayrıştırmaya çalışır. |
| TryParse(String, NumberStyles, IFormatProvider, Single) |
Belirli bir stilde ve kültüre özgü biçimdeki bir sayının dize gösterimini tek duyarlıklı kayan noktalı sayı eşdeğerine dönüştürür. Dönüş değeri, dönüştürmenin başarılı mı yoksa başarısız mı olduğunu gösterir. |
| TryParse(String, Single) |
Bir sayının dize gösterimini tek duyarlıklı kayan noktalı sayı eşdeğerine dönüştürür. Dönüş değeri, dönüştürmenin başarılı mı yoksa başarısız mı olduğunu gösterir. |
İşleçler
| Name | Description |
|---|---|
| Equality(Single, Single) |
Belirtilen Single iki değerin eşit olup olmadığını gösteren bir değer döndürür. |
| GreaterThan(Single, Single) |
Belirtilen değerin başka Single bir belirtilen Single değerden büyük olup olmadığını gösteren bir değer döndürür. |
| GreaterThanOrEqual(Single, Single) |
Belirtilen değerin başka Single bir belirtilen Single değerden büyük veya buna eşit olup olmadığını gösteren bir değer döndürür. |
| Inequality(Single, Single) |
Belirtilen Single iki değerin eşit olup olmadığını gösteren bir değer döndürür. |
| LessThan(Single, Single) |
Belirtilen değerin başka Single bir belirtilen Single değerden küçük olup olmadığını gösteren bir değer döndürür. |
| LessThanOrEqual(Single, Single) |
Belirtilen değerin başka Single bir belirtilen Single değerden küçük veya buna eşit olup olmadığını gösteren bir değer döndürür. |
Belirtik Arabirim Kullanımları
| Name | Description |
|---|---|
| IAdditionOperators<Single,Single,Single>.Addition(Single, Single) |
Toplamlarını hesaplamak için iki değeri bir araya ekler. |
| IAdditiveIdentity<Single,Single>.AdditiveIdentity |
Geçerli türün ek kimliğini alır. |
| IBinaryNumber<Single>.AllBitsSet |
Tüm bitlerin ayarlandığı ikili türün bir örneğini alır. |
| IBitwiseOperators<Single,Single,Single>.BitwiseAnd(Single, Single) |
İki değerin bit düzeyinde ve değerini hesaplar. |
| IBitwiseOperators<Single,Single,Single>.BitwiseOr(Single, Single) |
bit düzeyinde veya iki değeri hesaplar. |
| IBitwiseOperators<Single,Single,Single>.ExclusiveOr(Single, Single) |
İki değerin özel veya özel değerini hesaplar. |
| IBitwiseOperators<Single,Single,Single>.OnesComplement(Single) |
Belirli bir değerin bire tamamlayan gösterimini hesaplar. |
| IComparable.CompareTo(Object) |
Geçerli örneği aynı türdeki başka bir nesneyle karşılaştırır ve geçerli örneğin diğer nesneyle aynı sıralama düzeninde önce geldiğini, izlediğini veya yine aynı konumda yer alıp almadığını belirten bir tamsayı döndürür. |
| IConvertible.GetTypeCode() |
Bu örneğin değerini TypeCode döndürür. |
| IConvertible.ToBoolean(IFormatProvider) |
Bu üyenin açıklaması için bkz ToBoolean(IFormatProvider). . |
| IConvertible.ToByte(IFormatProvider) |
Bu üyenin açıklaması için bkz ToByte(IFormatProvider). . |
| IConvertible.ToChar(IFormatProvider) |
Bu dönüştürme desteklenmez. Bu yöntemi kullanmaya çalışmak bir InvalidCastExceptionoluşturur. |
| IConvertible.ToDateTime(IFormatProvider) |
Bu dönüştürme desteklenmez. Bu yöntemi kullanmaya çalışmak bir InvalidCastExceptionoluşturur. |
| IConvertible.ToDecimal(IFormatProvider) |
Bu üyenin açıklaması için bkz ToDecimal(IFormatProvider). . |
| IConvertible.ToDouble(IFormatProvider) |
Bu üyenin açıklaması için bkz ToDouble(IFormatProvider). . |
| IConvertible.ToInt16(IFormatProvider) |
Bu üyenin açıklaması için bkz ToInt16(IFormatProvider). . |
| IConvertible.ToInt32(IFormatProvider) |
Bu üyenin açıklaması için bkz ToInt32(IFormatProvider). . |
| IConvertible.ToInt64(IFormatProvider) |
Bu üyenin açıklaması için bkz ToInt64(IFormatProvider). . |
| IConvertible.ToSByte(IFormatProvider) |
Bu üyenin açıklaması için bkz ToSByte(IFormatProvider). . |
| IConvertible.ToSingle(IFormatProvider) |
Bu üyenin açıklaması için bkz ToSingle(IFormatProvider). . |
| IConvertible.ToType(Type, IFormatProvider) |
Bu üyenin açıklaması için bkz ToType(Type, IFormatProvider). . |
| IConvertible.ToUInt16(IFormatProvider) |
Bu üyenin açıklaması için bkz ToUInt16(IFormatProvider). . |
| IConvertible.ToUInt32(IFormatProvider) |
Bu üyenin açıklaması için bkz ToUInt32(IFormatProvider). . |
| IConvertible.ToUInt64(IFormatProvider) |
Bu üyenin açıklaması için bkz ToUInt64(IFormatProvider). . |
| IDecrementOperators<Single>.Decrement(Single) |
Bir değeri azaltma. |
| IDivisionOperators<Single,Single,Single>.Division(Single, Single) |
Kendi bölümünü hesaplamak için bir değeri diğerine böler. |
| IFloatingPoint<Single>.GetExponentByteCount() |
bir parçası TryWriteExponentLittleEndian(Span<Byte>, Int32)olarak yazılacak bayt sayısını alır. |
| IFloatingPoint<Single>.GetExponentShortestBitLength() |
Geçerli üssün en kısa iki tamamlayıcı gösteriminin uzunluğunu bit cinsinden alır. |
| IFloatingPoint<Single>.GetSignificandBitLength() |
Geçerli işaret işaretinin bit cinsinden uzunluğunu alır. |
| IFloatingPoint<Single>.GetSignificandByteCount() |
bir parçası TryWriteSignificandLittleEndian(Span<Byte>, Int32)olarak yazılacak bayt sayısını alır. |
| IFloatingPoint<Single>.TryWriteExponentBigEndian(Span<Byte>, Int32) |
Geçerli üs büyük endian biçiminde belirli bir yayılmaya yazmaya çalışır. |
| IFloatingPoint<Single>.TryWriteExponentLittleEndian(Span<Byte>, Int32) |
Geçerli üssü küçük endian biçiminde belirli bir süreye yazmaya çalışır. |
| IFloatingPoint<Single>.TryWriteSignificandBigEndian(Span<Byte>, Int32) |
Geçerli işaret işaretini büyük endian biçiminde belirli bir span'a yazmaya çalışır. |
| IFloatingPoint<Single>.TryWriteSignificandLittleEndian(Span<Byte>, Int32) |
Geçerli işaret işaretini küçük endian biçiminde belirli bir span'a yazmaya çalışır. |
| IFloatingPointConstants<Single>.E |
matematiksel sabitini |
| IFloatingPointConstants<Single>.Pi |
matematiksel sabitini |
| IFloatingPointConstants<Single>.Tau |
matematiksel sabitini |
| IFloatingPointIeee754<Single>.Epsilon |
ile sonuçlanmayan |
| IFloatingPointIeee754<Single>.NaN |
öğesini temsil |
| IFloatingPointIeee754<Single>.NegativeInfinity |
Negatif |
| IFloatingPointIeee754<Single>.NegativeZero |
Negatif |
| IFloatingPointIeee754<Single>.PositiveInfinity |
Pozitif |
| IIncrementOperators<Single>.Increment(Single) |
Bir değeri artırır. |
| IMinMaxValue<Single>.MaxValue |
Geçerli türün en büyük değerini alır. |
| IMinMaxValue<Single>.MinValue |
Geçerli türün en düşük değerini alır. |
| IModulusOperators<Single,Single,Single>.Modulus(Single, Single) |
Modüllerini veya kalan değerlerini hesaplamak için iki değeri birbirine böler. |
| IMultiplicativeIdentity<Single,Single>.MultiplicativeIdentity |
Geçerli türün çarpımlı kimliğini alır. |
| IMultiplyOperators<Single,Single,Single>.Multiply(Single, Single) |
Ürünlerini hesaplamak için iki değeri bir araya getiren. |
| INumberBase<Single>.IsCanonical(Single) |
Bir değerin kurallı gösteriminde olup olmadığını belirler. |
| INumberBase<Single>.IsComplexNumber(Single) |
Bir değerin karmaşık bir sayıyı temsil ediyor olup olmadığını belirler. |
| INumberBase<Single>.IsImaginaryNumber(Single) |
Bir değerin saf bir sanal sayıyı temsil ediyor olup olmadığını belirler. |
| INumberBase<Single>.IsZero(Single) |
Değerin sıfır olup olmadığını belirler. |
| INumberBase<Single>.One |
Türün değerini |
| INumberBase<Single>.Radix |
Türün radiksini veya tabanını alır. |
| INumberBase<Single>.TryConvertFromChecked<TOther>(TOther, Single) |
Tek hassasiyetli kayan nokta sayısını temsil eder. |
| INumberBase<Single>.TryConvertFromSaturating<TOther>(TOther, Single) |
Tek hassasiyetli kayan nokta sayısını temsil eder. |
| INumberBase<Single>.TryConvertFromTruncating<TOther>(TOther, Single) |
Tek hassasiyetli kayan nokta sayısını temsil eder. |
| INumberBase<Single>.TryConvertToChecked<TOther>(Single, TOther) |
Geçerli türün bir örneğini başka bir türe dönüştürmeyi dener ve geçerli türün temsil edilebilir aralığının dışında kalan değerler için bir taşma özel durumu oluşturur. |
| INumberBase<Single>.TryConvertToSaturating<TOther>(Single, TOther) |
Geçerli türün bir örneğini başka bir türe dönüştürmeyi dener ve geçerli türün temsil edilebilir aralığının dışında kalan değerleri doygunluğa getirir. |
| INumberBase<Single>.TryConvertToTruncating<TOther>(Single, TOther) |
Geçerli türün bir örneğini başka bir türe dönüştürmeye çalışır ve geçerli türün temsil edilebilir aralığının dışında kalan tüm değerleri kısaltır. |
| INumberBase<Single>.Zero |
Türün değerini |
| ISignedNumber<Single>.NegativeOne |
Türün değerini |
| ISubtractionOperators<Single,Single,Single>.Subtraction(Single, Single) |
Farklarını hesaplamak için iki değeri çıkarır. |
| IUnaryNegationOperators<Single,Single>.UnaryNegation(Single) |
Bir değerin tekli olumsuzlamasını hesaplar. |
| IUnaryPlusOperators<Single,Single>.UnaryPlus(Single) |
Bir değerin birli artısını hesaplar. |
Şunlara uygulanır
İş Parçacığı Güvenliği
Bu türün tüm üyeleri iş parçacığı güvenlidir. Örnek durumunu değiştirmek için görünen üyeler aslında yeni değerle başlatılan yeni bir örnek döndürür. Diğer türlerde olduğu gibi, iş parçacığı güvenliğini garanti etmek için bu türün bir örneğini içeren paylaşılan bir değişkene okuma ve yazma bir kilit tarafından korunmalıdır.