/FP (kayan nokta davranışı belirtin)
Kayan nokta türü davranışını bir kaynak kodu dosyası belirtir.
/fp:[precise | except[-] | fast | strict ]
Flags
precise
Varsayılan değer.En iyi duruma getirme katı ANSI uyumluluk için gereklidir kayan nokta Hesaplamaların duyarlığını değiştirebilirsiniz devre dışı bırakarak eşitlik ve eşitsizlik kayan nokta sınamaları tutarlılığını artırır. Varsayılan olarak, derleyici kayan noktalı hesaplamalar ara sonuçları tutacak yardımcı İşlemci'nin 80-bit kayıtlarını kullanır. Bu program hızını artırır ve programın boyutunu küçültür. Ancak, hesaplama bellekte 80 bitten az tarafından temsil edilen kayan nokta veri türleri hattınızda üzerinden uzun bir hesaplama duyarlık (daha küçük kayan nokta türü bit sayısı eksi 80 BITS) fazladan bit taşımasına tutarsız sonuçlar ortaya çıkabilir.
İle /fp:precise x 86 işlemcileri, derleyici gerçekleştirir ve uygun duyarlılığa atamaları ve yayınları ve float türünde değişkenler üzerinde bir işlev parametreleri iletmek, yuvarlama. Bu yuvarlama veri türünü kapasiteden büyük herhangi bir anlam korumuyor güvence altına alır. Bir program ile derlenmiş /fp:precise daha yavaş ve daha büyük bir olmadan derlenmiş olabilir /fp:precise. /fp:preciseİç bilgileri devre dışı bırakır; Standart çalışma zamanı kitaplığı yordamları yerine kullanılır. Daha fazla bilgi için bkz. /Oi (iç işlevlerin Oluştur).
Kayan nokta aşağıdaki davranış ile etkin /fp:precise:
Aykırılıkları veya birden çok işlemi yalnızca bir tek sonunda yuvarlama ile birleşik bir işlem ile değiştirerek etkin olan /fp:precise.
Özel değerleri geçersiz ifade iyileştirmeler (NaN, + sonsuz, - sonsuz + 0, - 0) değil izin verilir. En iyi duruma getirme x-x => 0, x*0 => 0, x-0 => x, x+0 => x, ve 0-x => -x (bkz: IEEE 754'e ve C99 standardı) çeşitli nedenlerle tüm geçersizdir.
Derleyici NaN ilgili karşılaştırmalar düzgün işleyecektir. Örneğin, x != x veren doğru , x NaN olduğu ve sipariş edilen karşılaştırma NaN kişiyle ilgili bir özel durum yükselt.
İfade değerlendirme izleyin C99 flt_eval_method = 2, biri dışında. X 86 için programlama, işlemciler, fpu 53-bit duyarlılık için ayarlanmış olduğundan bu kabul uzun double precision.
Tam olarak bir faktör kullanımı dönüştürülmüş 1.0 tarafından çarpma. x*y*1.0içine dönüştürülmüş x*y. Benzer şekilde, x*1.0*y içine dönüştürülmüş x*y.
Tam olarak 1.0 ile bölme bölünendir kullanımını dönüştürülür. x*y/1.0içine dönüştürülmüş x*y. Benzer şekilde, x/1.0*y içine dönüştürülmüş x*y.
Kullanarak /fp:precise ile fenv_access on, kayan nokta ifade, derleme zamanı değerlendirmeleri gibi bazı iyileştirmeleri devre dışı bırakır. Yuvarlama moduyla değiştirmek, örneğin, _control87, _controlfp, __control87_2ve derleyici bir kayan noktalı hesaplamayı yapar, sürece belirttiğiniz yuvarlama modu etkin olmayacak fenv_access açık'tır.
/fp:preciseyerini alan /Op derleyici seçeneği.
fast
Hızlı kod de çoğu oluşturur. /fp:fastkullanılamaz /fp:strict veya /fp:precise, komut satırında belirtilen son seçeneği kullanılır. /fp:fastve /fp:except bir derleyici hatası oluşturur.Seçme / Za, /Ze (devre dışı bırak dil uzantıları) (ANSI uyumluluk) ve /fp:fast beklenmeyen davranışlara neden olabilir. Örneğin, tek duyarlıklı kayan nokta işlemlerini tek duyarlıklı yuvarlanmasını değil.
except[-]
Güvenilir kayan nokta özel durumu modeli. Tetiklendikten hemen bunlar özel durum oluşturuldu. Bu seçenek varsayılan olarak etkin değildir. Eksi işareti seçeneğini açıkça ekleyerek bunu devre dışı bırakır.strict
Getirmesine kayan nokta modeli. /fp:strictneden fp_contract kapalı olmasını ve fenv_access açık olacak. /fp:exceptörtülü ve açıkça belirterek devre /fp:except-. Birlikte kullanıldığında /fp:except-, /fp:strict katı kayan nokta semantiği zorlar olağanüstü olaylar için saygı olmadan.
Notlar
Birden çok /fp aynı derleme seçenekler belirtilebilir.
İşlev tarafından kayan nokta davranışını denetlemek için bkz: float_control pragma.
Çoğu, kayan nokta en iyi duruma getirme ile ilgili /fp:strict, /fp:except (ve onun karşılık gelen formunda bilgi), ve fp_contract pragma makineye bağımlı olan. /fp:strictve /fp:except ile uyumlu olmayan /clr.
/fp:preciseKayan nokta bir uygulamanýn gereklilikleri çoğunu giderilmelidir. Gerekirse, kullanabilirsiniz, /fp:except ve /fp:strict, ancak bazı performans düşüklüğü olabilir. Performans en önemlisi ise kullanmak isteyebilirsiniz /fp:fast.
/fp:strict, /fp:fast, ve /fp:precise precision (doğruluğu) modlar. Tek bir anda etkin olabilir. /fp:strict Ve /fp:precise olduğu belirtilen, derleyici son işler bir kullanın. Her ikisi de belirtilemez /fp:strict ve /fp:fast.
Daha fazla bilgi için bkz: https://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_vstechart/html/floapoint.asp.
Visual Studio geliştirme ortamındaki bu derleyici seçeneğini ayarlamak için
Projenin Özellik Sayfaları iletişim kutusunu açın. Ayrıntılar için bkz. Nasıl yapılır: Proje özellik sayfalarını açın.
Genişletme Yapılandırma özellikleri düğüm.
Genişletme c/C++ düğüm.
Seçin Kod oluşturma özellik sayfası.
Değiştirmek Kayan nokta modeli özelliği.
Bu derleyici seçeneği programlı olarak ayarlamak için
- Bkz: floatingPointModel