SORU
22 EKİM 2010, Cuma


Nasıl pozitif veya negatif bir sayı olup olmadığını belirlemek için?

Pozitif veya negatif bir sayı olup olmadığını belirlemek için nasıl bir röportajda istendi. Kuralları biz değil koşullu operatörler gibi <, >, yerleşik java fonksiyonları (gibi substring, indexOf, charAt, ve startsWith), düzenli veya API.

Bu konuda biraz araştırma yaptım ve aşağıdaki kodu verilir, ama sadece tamsayı türü için çalışır. Ama bana float, double long için çalışan genel bir kod yazmak istediler.

 // This might not be better way!!

 S.O.P ((( number >> 31 ) & 1) == 1 ? "- ve number " : " ve number );

sizin taraftan herhangi bir fikir?

CEVAP
22 EKİM 2010, Cuma


Tamsayı durumlarda kolay. Çift davayı sonsuz hakkında hatırladığın kadar karmaşıktır.

Eğer çift", 1E308 * 2. gibi ifadeler taşan ile değiştirebilirsiniz" apı parçası sabitler göz önüne alırsak not:

int sign(int i) {
    if (i == 0) return 0;
    if (i >> 31 != 0) return -1
    return  1;
}
int sign(long i) {
    if (i == 0) return 0;
    if (i >> 63 != 0) return -1
    return  1;
}
int sign(double f) {
    if (f != f) throw new IllegalArgumentException("NaN");
    if (f == 0) return 0;
    f *= Double.POSITIVE_INFINITY;
    if (f == Double.POSITIVE_INFINITY) return  1;
    if (f == Double.NEGATIVE_INFINITY) return -1;

    //this should never be reached, but I've been wrong before...
    throw new IllegalArgumentException("Unfathomed double");
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • MADFINGER Games a.s.

    MADFINGER Ga

    21 NİSAN 2009
  • The Bad Tutorials

    The Bad Tuto

    6 EKİM 2009
  • Truc Minh

    Truc Minh

    23 Ocak 2011