2012-06-17 14 views
12

(int)myDouble(int)Math.Truncate(myDouble)'dan farklı mı?(int) myDouble (int) Math.Truncate (myDouble) 'dan farklı mıdır?

diğer üzerinden bir tercih için bir neden var mı?

+0

Benim naif tahminim örtük aynı olsa bile, eski dil özelliklerine bağlıdır iken ikincisi, CLR API bir açık bir şekilde tanımlanmış bir yönü olduğunu olurdu. –

+0

'Math.Truncate' kullanılmasının gereksiz bir adım olduğunu düşünürdüm. – Oded

+3

'Math.Truncate', sonucunuzu kesirli parça içermeyen bir 'double' olarak tutmanız gerektiğinde amaçlanmıştır. Bunu bir "int" olarak adlandırmak istiyorsanız, yayını kullanın. – Douglas

cevap

8

Math.Truncate hiçbir kesirli kısmı ile çift olarak sonuca tutmak için gereken zaman içindir. Eğer bir int için onu icat etmek istiyorsanız, sadece doğrudan cast kullanın.

Düzenleme:

Eğer ayrılmaz bir türe çift veya şamandıra değerinden dönüştürdüğünüzde, değer kesilir: Referans olarak aşağıda “Explicit Numeric Conversions Table” alakalı dokümandır.

5

olarak myDouble çok geniş olduğunda (int)Math.Truncate(myDouble) aynı şekilde başarısız olur Ignacio Vazquez-Abrams(int)myDouble tarafından işaret etti.

Yani çıktıda hiçbir fark yoktur, ancak (int)myDouble hızlı çalışıyor.

+2

+1: Bu yanıt uygun bir noktayı yükseltir. Bunun dışında, aksi takdirde aynı durumla karşılaştığınız için, (int) 'cast'ı kesilmiş double'dan kaldırmanız gerekir. – Douglas

+0

@Ignacio Vazquez-Abrams, haklısınız. – dantuch

+0

Numarayı oldukça büyük olsaydık, '' (uzun) 'kullanabilir miyiz? – mpen