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

  • Cartoonium

    Cartoonium

    11 NİSAN 2011
  • Eric Magidson

    Eric Magidso

    4 Ocak 2009
  • Tips On Linux

    Tips On Linu

    26 Temmuz 2008