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

  • Google Chrome

    Google Chrom

    1 EYLÜL 2008
  • HereWeStayKings

    HereWeStayKi

    3 NİSAN 2013
  • KliptOut KwazeeKilla

    KliptOut Kwa

    24 ŞUBAT 2010