/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
Otevřete dialogové okno projektu Stránky vlastností.Další informace naleznete v tématu Jak: otevření stránky vlastností projektu.
Rozbalte uzel Vlastnosti konfigurace.
Rozbalte C/C++ uzel.
Vyberte Generování kódu stránky vlastností.
Změnit Plovoucí bod modelu vlastnost.
Programově nastavit tuto volbu kompilátoru
- Viz téma floatingPointModel.