Některé informace pocházejí z testovací verze produktu, která může před vydáním podléhat významným změnám. Společnost Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, s ohledem na informace obsažené v tomto dokumentu.
Představuje číslo s plovoucí desetinnou čárkou s dvojitou přesností.
public value class double : IComparable, IComparable, IConvertible, IEquatable, IFormattable public value class double : IComparable, IComparable, IConvertible, IEquatable, ISpanFormattable public value class double : IComparable, IConvertible, IEquatable, IParsable, ISpanParsable, System::Numerics::IAdditionOperators, System::Numerics::IAdditiveIdentity, System::Numerics::IBinaryFloatingPointIeee754, System::IBinaryNumeric: Číslice::IBitwiseOperators, Systém::Číselné údaje::IComparisonOperators, Systém::Číselné údaje::IDecrementOperators, Systém::Číselné údaje::IDivisionOperators, Systém::Číselné údaje::IEqualityOperators, Systém::Číselné údaje::IExponenciální:Numerické funkce, Systém: :IFloatingPoint, Systém::Číselné údaje::IFloatingPointConstants, Systém::Číslice::IFloatingPointIeee754, Systém::Číslice::IHyperbolickéFunkce, Systém::Číslice::IIncrementOperators, Systém::Číselné údaje::Unumerickéx , Systém::Číslice::IModulusOperators, Systém::Číslice::IMultiplyativeIdentity, Systém::Číslice::IMultiplyOperators, Systém::Čísla::Čísla, Systém::Číslice::INumberBase, Systém::Čísla::IPowerFunctions ::Číslice::IRootFunctions, Systém::Číslice::ISignedNumber, Systém::Číslice::ISubtractionOperators, Systém::Číslice::ITrigonometricFunctions, Systém::Číslice::IUnaryNegationOperators, Systém::Číslice::Operátory
public value class double : IComparable, IConvertible, IEquatable, IParsable, ISpanParsable, IUtf8SpanParsable, System::Numerics::IAdditionOperators, System::Numerics::IAdditiveIdentity, System::Numerics::IBinaryFloatingPoint754Systém:Systém:IBinaryFloatingPoint754Nee: ::Číslice::IBitwiseOperators, Systém::Číslice::IComparisonOperators, Systém::Číslice::IDecrementOperators, Systém::Číslice::IDivisionOperators, Systém::Číslice::IEqualityOperators, Systém::Číslice::IExponenciální:Funkce,Systém:Funkce Číslice::IFloatingPoint, Systém::Číslice::IFloatingPointConstants, Systém::Číslice::IFloatingPointIeeeXNUMX, Systém::Číslice::IHyperbolickéFunkce, Systém::Číslice::IIncrementOperators, Systém::Číselné číslice:Functions:IL :IMinMaxValue, Systém::Číslice::IModulusOperators, Systém::Číslice::IMultiplikativníIdentita, Systém::Čísla::IMultiplyOperators, Systém::Čísla::Čísla, Systém::Čísla::INumberBase, Systém::IPomerické , Systém::Číslice::IRootFunctions, Systém::Číslice::ISignedNumber, Systém::Číslice::ISubtractionOperators, Systém::Číslice::ITrigonometricFunctions, Systém::Číslice::IUnaryNegationOperators, Systém::Číselné číslice
public value class double : IComparable, IConvertible, IFormattable public value class double : IComparable, IComparable, IEquatable, IFormattable public struct Double : IComparable, IComparable, IConvertible, IEquatable, IFormattable public readonly struct Double : IComparable, IComparable, IConvertible, IEquatable, IFormattable public readonly struct Double : IComparable, IComparable, IConvertible, IEquatable, ISpanFormattable public readonly struct Double : IComparable, IConvertible, IEquatable, IParsable, ISpanParsable, System.Numerics.IAdditionOperators, System.Numerics.IAdditiveIdentity, System.Numerics.IBinaryFloatingPointIeee754, System.Numerics,IBinary.System.Numerics.IBinary. parison Operátoři , System.numerics.idecrementoprators, system.numerics.divisionoperators, system.numerics.iequalityoprators, system.numerics.exponencialfunctions, System.numerics. System .Numerics.IIincrementOperators, System.Numerics.ILogarithmicFunctions, System.Numerics.IMinMaxValue, System.Numerics.IModulusOperators, System.Numerics.IMultiplikativní.Identita, System.Numerics.MultiplyNumerics. Numerics .IPowerFunctions, System.Numerics.IRootFunctions, System.Numerics.ISsignedNumber, System.Numerics.ISsubtractionOperators, System.Numerics.ITrigonometricFunctions, System.Numerics.IUnaryNegationOperators, System.UpernaryNumerics.
public readonly struct Double : IComparable, IConvertible, IEquatable, IParsable, ISpanParsable, IUtf8SpanParsable, System.Numerics.IAdditionOperators, System.Numerics.IAdditiveIdentity, System.Numerics.IBinaryFloatingPointIeee.Systemwise754.IBumeric. atory, System.Numerics .IComparisonOperators, System.Numerics.IDecrementOperators, System.Numerics.IDivisionOperators, System.Numerics.IEqualityOperators, System.Numerics.IExponenciálníFunkce, System.Numerics.IFloatingPoint, System.NumericeIFloatingPointNumeric.Constants. IHyper boliumFunctions , System.Numerics.IIncrementOperators, System.Numerics.ILogarithmicFunctions, System.Numerics.IMinMaxValue, System.Numerics.IModulusOperators, System.Numerics.IMultiplikativníIdentita.Bumerics. ase, System .Numerics.IPowerFunctions, System.Numerics.IRootFunctions, System.Numerics.ISsignedNumber, System.Numerics.ISsubtractionOperators, System.Numerics.ITrigonometricFunctions, System.Numerics.IUnaryNegationOperators.SystemInanamerice
[System.Serializable] public struct Double : IComparable, IConvertible, IFormattable [System.Serializable] [System.Runtime.InteropServices.ComVisible(true)] public struct Double : IComparable, IComparable, IConvertible, IEquatable, IFormattable public struct Double : IComparable, IComparable, IEquatable, IFormattable type double = struct interface IConvertible interface IFormattable type double = struct interface IConvertible interface ISpanFormattable interface IFormattable typ double = struct rozhraní IConvertible rozhraní IFormattable rozhraní IParsable rozhraní ISpanFormattable rozhraní ISpanParsable rozhraní IAdditionOperators rozhraní IAdditiveIdentity rozhraní IBinaryFloatingPointIeee754 rozhraní IBinaryNumber rozhraní IbitwiseOperators rozhraní IComparisonOperators rozhraní IEqualityOperatorsrozhraníOperepere rozhraní operátorů IMultiplicativeIdentity rozhraní IMultiplyOperators rozhraní INumber rozhraní INumberBase rozhraní ISubtractionOperators rozhraní IUnaryNegationOperators rozhraní IUnaryPlusOperators rozhraní IExponentialFunctions rozhraní IFloatingPointConstants rozhraní IFloatingPoint rozhraní ISignedNumber rozhraní IFloatingPointIeee754 rozhraní IHyperbolicFunctions rozhraní ILogarithmicFunctions rozhraní IPowerFunctions rozhraní IRootFunctions rozhraní ITrigonometricFunctions rozhraní IM
typ double = struct rozhraní IConvertible rozhraní IFormattable rozhraní IParsable rozhraní ISpanFormattable rozhraní ISpanParsable rozhraní IAdditionOperators rozhraní IAdditiveIdentity rozhraní IBinaryFloatingPointIeee754 rozhraní IBinaryNumber rozhraní IbitwiseOperators rozhraní IComparisonOperators rozhraní IEqualityOperatorsrozhraníOperepere rozhraní operátorů IMultiplicativeIdentity rozhraní IMultiplyOperators rozhraní INumber rozhraní INumberBase rozhraní ISubtractionOperators rozhraní IUnaryNegationOperators rozhraní IUnaryPlusOperators rozhraní IUtf8SpanFormattable rozhraní IUtf8Span Rozhraní IExponentialFunctions rozhraní IFloatingPointConstants rozhraní IFloatingPoint rozhraní ISignedNumber rozhraní IFloatingPointIeee754 rozhraní IHyperbolicFunctions rozhraní ILogaritmické rozhraní ILogarithmicVunctions rozhraní IPowerotunctions rozhraní ITIMMaxFunctions ue
type double = struct rozhraní IConvertible rozhraní IFormattable rozhraní IParsable rozhraní ISpanFormattable rozhraní ISpanParsable rozhraní IUtf8SpanFormattable rozhraní IUtf8SpanParsable rozhraní IAdditionOperators rozhraní IAdditiveIdentity rozhraní IBinaryFloatingPointIeee754 rozhraní IBinary NumberOIEcrement rozhraní IBOIPERITPERIBOPERITPERIBO rozhraní I DivisionOperators rozhraní IIIncrementOperators rozhraní IModulusOperators rozhraní IMultiplicativeIdentity rozhraní IMultiplyOperators rozhraní INumber rozhraní INumberBase rozhraní Rozhraní ISsubtractionOperators Rozhraní IUnaryNegationOperators Rozhraní IUnaryPlusOperators Rozhraní Rozhraní ExponentialFunctions Rozhraní IFloatingPointConstants Rozhraní IFloatingPoint Rozhraní ISignedNumber IFloatingPointIeee754 rozhraní IHyperbolické rozhraníFunctions Rozhraní ILogaritmickéRozhraníFunctions ILogarithmicPointRunctions rozhraní IIMFunmetrics inMaxValue
[] type double = struct interface IFormattable interface IConvertible [] [] type double = struct interface IFormattable interface IConvertible type double = struct interface IFormattable Public Structure Double Implements IComparable, IComparable(Of Double), IConvertible, IEquatable(Of Double), IFormattable Public Structure Double Implements IComparable, IComparable(Of Double), IConvertible, IEquatable(Of Double), ISpanFormattable Public Structure Double Implements IAdditionOperators(Of Double, Double, Double), IAdditiveIdentity(Of Double, Double), IBinaryFloatingPointIeee754(Of Double), IBinaryNumber(Of Double), IBitwiseOperators(Of Double, Double, Double), IComparable(Of Double), IComparisonOperators(Of Double, Double, Boolean), IConvertible, IDecrementOperators(Of Double), IDivisionOperators(Of Double, Double, Double), IEqualityOperators(Of Double, Double, Boolean), IEquatable(Of Double), IExponentialFunctions(Of Double), IFloatingPoint(Of Double), IFloatingPointConstants(Of Double), IFloatingPointIeee754(Of Double), IHyperbolicFunctions(Of Double), IIncrementOperators(Of Double), ILogarithmicFunctions(Of Double), IMinMaxValue(Of Double), IModulusOperators(Of Double, Double, Double), IMultiplicativeIdentity(Of Double, Double), IMultiplyOperators(Of Double, Double, Double), INumber(Of Double), INumberBase(Of Double), IParsable(Of Double), IPowerFunctions(Of Double), IRootFunctions(Of Double), ISignedNumber(Of Double), ISpanParsable(Of Double), ISubtractionOperators(Of Double, Double, Double), ITrigonometricFunctions(Of Double), IUnaryNegationOperators(Of Double, Double), IUnaryPlusOperators(Of Double, Double) Public Structure Double Implements IAdditionOperators(Of Double, Double, Double), IAdditiveIdentity(Of Double, Double), IBinaryFloatingPointIeee754(Of Double), IBinaryNumber(Of Double), IBitwiseOperators(Of Double, Double, Double), IComparable(Of Double), IComparisonOperators(Of Double, Double, Boolean), IConvertible, IDecrementOperators(Of Double), IDivisionOperators(Of Double, Double, Double), IEqualityOperators(Of Double, Double, Boolean), IEquatable(Of Double), IExponentialFunctions(Of Double), IFloatingPoint(Of Double), IFloatingPointConstants(Of Double), IFloatingPointIeee754(Of Double), IHyperbolicFunctions(Of Double), IIncrementOperators(Of Double), ILogarithmicFunctions(Of Double), IMinMaxValue(Of Double), IModulusOperators(Of Double, Double, Double), IMultiplicativeIdentity(Of Double, Double), IMultiplyOperators(Of Double, Double, Double), INumber(Of Double), INumberBase(Of Double), IParsable(Of Double), IPowerFunctions(Of Double), IRootFunctions(Of Double), ISignedNumber(Of Double), ISpanParsable(Of Double), ISubtractionOperators(Of Double, Double, Double), ITrigonometricFunctions(Of Double), IUnaryNegationOperators(Of Double, Double), IUnaryPlusOperators(Of Double, Double), IUtf8SpanParsable(Of Double) Public Structure Double Implements IComparable, IConvertible, IFormattable Public Structure Double Implements IComparable, IComparable(Of Double), IEquatable(Of Double), IFormattable Integer typy jsou skvělé pro počítání celých čísel, ale někdy potřebujeme uložit velmi velká čísla nebo čísla se zlomkovou částí. Proměnná s plovoucí desetinnou čárkou je proměnná, která může obsahovat reálné číslo, například 4320,0, -3,33 nebo 0,01226. název plovoucí bod označuje, že desetinná čárka se může pohybovat, což znamená, že může podporovat proměnný počet číslic před a za ní.
Existují tři různé typy dat s pohyblivou řádovou čárkou: float, double a long double. Stejně jako u celých čísel, C++ neurčuje skutečné velikosti těchto typů, ale zaručuje minimální velikosti:
- float – musí být alespoň 32bitové a zaručit minimálně 6 platných číslic
- double – 48-bit a musí být alespoň float. Garantuje 15 platných číslic
- long double – minimálně 80 bitů a 18 platných číslic
Datové typy s pohyblivou řádovou čárkou jsou vždy se znaménkem, což znamená, že mohou obsahovat kladné i záporné hodnoty.
Níže jsou uvedeny příklady definování proměnných s plovoucí desetinnou čárkou:
float f_num; double d_num; long double ld_num; Možná jste si všimli, že název proměnné má předponu – není to nutné, ale pomáhá to pochopit, jaký typ proměnné se aktuálně používá.
Při inicializaci proměnných tohoto typu vždy uveďte alespoň jedno desetinné místo, i když je nula. Tímto způsobem kompilátor pochopí, že proměnná patří skutečnému typu.
double d_num < 5.0 >; float f_num < 5.0f >; Standardně jsou literály s pohyblivou řádovou čárkou typu double. Přípona f se používá k označení literálu typu float.
Možná jste si všimli, že v kódu výše se inicializace neprovádí přes operátor přiřazení = , ale pomocí zápisu . Toto je inicializace seznamu, přišla do jazyka ze standardu 11 a má jednu výhodu:
int num; num = 3.14; std::cout 3 Ve výše uvedeném kódu se snažíme uložit reálné číslo do celočíselné proměnné. Takový program se zkompiluje a bude fungovat, ale přijdeme o celou reálnou část čísla.
Pokud použijeme inicializaci seznamu, dostaneme chybu kompilace:
int num < 3.14 >; // ошибка int count; count = < 3.14 >; // ошибка Zvažte tento program:
int main() < float f_num = < 10.0 / 3.0 >; double d_num = < 10.0 / 3.0 >; std::cout
3.33333 3.33333
Vezměte prosím na vědomí, že každá z vytištěných hodnot má pouze 6 platných číslic. Toto je výchozí chování objektu cout, ale toto chování můžeme přepsat a zpřesnit:
#include #include // pro zvýšení přesnosti int main() < std::cout ; double d_num = < 10.0 / 3.0 >; std::cout
3.333333253860474 3.333333333333333
Je vidět, že číslo float není přesně definováno a obsahuje chyby, protože typ float nám zaručuje pouze šest platných číslic.
Existují dvě speciální kategorie čísel s pohyblivou řádovou čárkou. První je Inf, což představuje nekonečno. Inf může být pozitivní nebo negativní. Druhým je NaN, což znamená Not a Number – ne číslo. Existuje několik různých typů NaN. NaN a Inf jsou dostupné pouze v případě, že kompilátor s pohyblivou řádovou čárkou používá specifický formát. Pokud je použit jiný formát, následující kód má za následek nedefinované chování.
#include int main() < dvojitá nula < 0.0 >; double pos_inf < 5.0 / nula >; // kladné nekonečno std::cout ; // záporné nekonečno std::cout ; // není číslo (matematicky nesprávné) std::cout
inf -inf nan
Úkol
Napište program, který spočítá, kolik kilometrů auto ujede na plnou nádrž. Objem nádrže budiž 43 litrů a spotřeba 8.8 litrů na 10 km. Zobrazit výsledek na obrazovce.
Cvičení neprojde testem – co mám dělat?
Pokud jste ve slepé uličce, pak je čas položit otázku v části „Diskuse“. Jak správně položit otázku:
- Nezapomeňte připojit výstup testů, bez něj je téměř nemožné pochopit, co je špatně, i když ukážete svůj kód. Programátoři jsou špatní ve spouštění kódu ve svých hlavách, ale chyba, kterou obdrží, téměř vždy dává jasně najevo, kde hledat.
Kód funguje v mém prostředí, ale ne tady
Testy jsou navrženy tak, že testují řešení různými způsoby a na různých datech. Řešení často bude fungovat s některými vstupy, ale ne s jinými. Abyste tomuto bodu porozuměli, prostudujte si záložku „Testy“ a pečlivě si prohlédněte chybový výstup, který obsahuje rady.
Můj kód se liší od řešení učitele
To je normální , při programování lze jeden úkol splnit mnoha způsoby. Pokud váš kód projde testem, pak splňuje podmínky úlohy.
V ojedinělých případech se stane, že je řešení šité na míru testům, ale to je hned vidět.
Četl jsem lekci – nic není jasné
Vytvářet vzdělávací materiály, které jsou srozumitelné všem bez výjimky, je poměrně obtížné. Hodně se snažíme, ale vždy je co zlepšovat. Pokud narazíte na materiál, kterému nerozumíte, popište problém v části „Diskuse“. Ideální je, když nejasné body formulujete formou otázek. Na provedení změn obvykle potřebujeme několik dní.
Mimochodem, na vylepšování kurzů se můžete podílet i vy: níže je odkaz na zdrojový kód lekcí, který lze upravovat přímo z prohlížeče.















