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

  • captainpuppys2000

    captainpuppy

    20 HAZİRAN 2013
  • POGProductionz

    POGProductio

    27 NİSAN 2012
  • SPBedition

    SPBedition

    24 HAZİRAN 2013