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

  • Amir Parmar

    Amir Parmar

    25 Kasım 2010
  • Chip Johnson

    Chip Johnson

    30 AĞUSTOS 2007
  • LounaTutorials

    LounaTutoria

    10 EYLÜL 2009