Sdílet prostřednictvím


/FP (určit chování s plovoucí čárkou)

Ve zdrojovém kódu souboru Určuje chování s plovoucí desetinnou čárkou.

/fp:[precise | except[-] | fast | strict ]

Příznaky

  • precise
    Výchozí nastavení.

    Zlepšuje konzistence s plovoucí desetinnou čárkou testů na rovnosti a nerovnost zakázáním optimalizace, která by mohla změnit přesnost výpočtů s plovoucí desetinnou čárkou, které je požadováno pro přísnou shodu ANSI.Kompilátor používá ve výchozím nastavení koprocesoru 80 bit registrů držet průběžné výsledky výpočtů s plovoucí desetinnou čárkou.To zvyšuje rychlost program a program automaticky zmenší.Protože výpočet zahrnuje typy dat s plovoucí desetinnou čárkou v paměti jsou představovány menší než 80 bitů, však navíc bitů přesnost (80 bitů mínus počet bitů v menší typ s plovoucí desetinnou čárkou) prostřednictvím dlouhé výpočtu může způsobit nekonzistentní výsledky.

    S /fp:precise x 86 procesorů, kompilátor provede zaokrouhlení na proměnné typu float řádné přesnosti pro přiřazení a nádech a při předávání parametrů funkce.Toto zaokrouhlení záruky dat není zachována žádné větší než kapacita jeho typ význam.Zkompilovaný program s /fp:precise může být pomalejší a větší než jedna kompilován bez /fp:precise./fp:precisevnitřní objekty serveru zakáže; místo nich použít standardní knihovny spuštění rutiny.Další informace naleznete v tématu /OI (generování vnitřní funkce).

    Následující chování s plovoucí desetinnou čárkou je povoleno s /fp:precise:

    • Je povoleno stažených tvarů hovorové nebo nahrazení jednoho složeného operaci s pouze jediné zaokrouhlení na konci, více operací s /fp:precise.

    • Optimalizace výrazu, které jsou neplatné pro speciální hodnoty (NaN, nekonečno-nekonečno + 0, 0) není povoleno.Optimalizace x-x => 0, x*0 => 0, x-0 => x, x+0 => x, a 0-x => -x z různých důvodů (viz IEEE 754 a C99 standard) jsou všechny neplatné.

    • Kompilátor bude správně zpracovávat porovnání zahrnující NaN.Například x != x vyhodnocen jako true Pokud x NaN a vyvolat výjimku, objednané porovnání zahrnující NaN.

    • Vyhodnocení výrazu bude následovat C99 FLT_EVAL_METHOD = 2, s výjimkou jednoho.Při programování pro x 86 procesorů, protože je nastavena FPU na 53 bit precision to budou považovány za dlouho Dvojitá přesnost.

    • Vynásobením přesně 1.0 transformovány do použití dalších faktorů.x*y*1.0na x*y.Podobně x*1.0*y na x*y.

    • Použití dividend transformaci dělení přesně 1.0.x*y/1.0na x*y.Podobně x/1.0*y na x*y.

    Pomocí /fp:precise s fenv_access na zakáže některé optimalizace jako plovoucí bod výrazy hodnocení kompilace.Například změna zaokrouhlení režimu s _control87, _controlfp, __control87_2a kompilátor provádí výpočet s plovoucí desetinnou čárkou, zaokrouhlení režimu zadaný nebude v platnosti, dokud fenv_access je ON.

    /fp:precisenahradí /Op volba kompilátoru.

  • fast
    Nejrychlejší kód vytvoří ve většině případů./fp:fastnelze použít s /fp:strict nebo /fp:precise, bude použit poslední možnost zadané na příkazovém řádku./fp:fasta /fp:except vygeneruje chybu kompilátoru.

    Výběr / Za, /Ze (jazyk zakázat rozšíření) (ANSI kompatibility) a /fp:fast může způsobit neočekávané chování.Operace s plovoucí desetinnou čárkou jednoduchá přesnost například nesmí být zaokrouhlena na jediné přesnost.

  • except[-]
    Model spolehlivé výjimku s plovoucí desetinnou čárkou.Výjimky bude aktivována ihned po jejich aktivaci.Tato možnost je vypnuta ve výchozím nastavení.Připojením mínus možnosti výslovně zakáže.

  • strict
    Nejpřísnější model s plovoucí desetinnou čárkou./fp:strictzpůsobí, že fp_contract být vypnuto a fenv_access být ON./fp:exceptje zahrnuto a lze zakázat zadáním explicitně /fp:except-.Při použití s /fp:except-, /fp:strict Vynutí striktní sémantiku s plovoucí desetinnou čárkou, ale bez ohledu pro mimořádné události.

Poznámky

Více /fp možnosti lze zadat ve stejném kompilace.

Funkce řízení chování s plovoucí desetinnou čárkou, naleznete float_control pragma.

Většina čárce optimalizace související s /fp:strict, /fp:except (a jeho odpovídající pragmas) a fp_contract pragma jsou závislý na počítači./fp:stricta /fp:except nejsou kompatibilní s /clr.

/fp:preciseby řešit většinu požadavků na aplikace s plovoucí desetinnou čárkou.-Li to nutné, můžete použít /fp:except a /fp:strict, ale mohou být některé snížení výkonu.Výkon je nejdůležitější, je vhodné použít /fp:fast.

/fp:strict, /fp:fast, a /fp:precise jsou režimy přesnost (správnost).Pouze jeden může být v platnosti v čase.Pokud /fp:strict a /fp:precise jsou určena, pomocí kompilátoru, který zpracovává poslední.Nelze zadat oba /fp:strict a /fp:fast.

Další informace naleznete v https://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_vstechart/html/floapoint.asp.

Chcete-li nastavit tuto možnost kompilátoru ve vývojovém prostředí Visual Studio

  1. Otevřete dialogové okno projektu Stránky vlastností.Další informace naleznete v tématu Jak: otevření stránky vlastností projektu.

  2. Rozbalte uzel Vlastnosti konfigurace.

  3. Rozbalte C/C++ uzel.

  4. Vyberte Generování kódu stránky vlastností.

  5. Změnit Plovoucí bod modelu vlastnost.

Programově nastavit tuto volbu kompilátoru

Viz také

Referenční dokumentace

Možnosti kompilátoru

Možnosti nastavení kompilátoru