SORU
7 EKİM 2008, Salı


Nasıl Perl ile kayan noktalı bir sayıyı yuvarlamak mı?

Nasıl ondalık sayı (kayan nokta) en yakın tam sayıya yuvarlak edebilir miyim?

örneğin

1.2 = 1
1.7 = 2

CEVAP
7 EKİM 2008, Salı


perldoc -q round çıktı

Perl bir yuvarlak var() fonksiyonu? Ne ceil() ve floor()? Fonksiyonlar Trigonometri?

int() sadece 0 doğru keser unutmayın. Basamak belirli bir sayıya yuvarlama için, sprintf() printf() genellikle kolay olur rota.

    printf("%.3f", 3.1415926535);       # prints 3.142

POSIX modülü (standart Perl paketinin bir parçası). Ve diğer matematiksel ve trigonometrik sayısı 12*, floor()*, fonksiyonlar.

    use POSIX;
    $ceil   = ceil(3.5);                        # 4
    $floor  = floor(3.5);                       # 3

5.003 perls için 5.000, Trigonometri Math::Complexyapıldı modül. 5.004, Math::Trig Bu modül (parça standart Perl ile dağıtım) uygular trigonometrik fonksiyonlar. Dahili Math::Complex modül ve bazı işlevleri patlak kullanır karmaşık düzlem içine gerçek eksen, örneğin 2 ters sinüsünü.

Mali uygulamalarda yuvarlama ciddi etkileri olabilir ve yuvarlama kullanılan yöntemin tam olarak belirtilmelidir. Bu doğduğunda muhtemelen yuvarlama ediliyor hangisi güvenme öder Perl tarafından kullanılan, ancak bunun yerine ihtiyacınız yuvarlama işlevi uygulamak için kendini.

Neden, hala yarı yolda noktasında bir sorun çıkacak nasıl fark değişim:

    for ($i = 0; $i < 1.01; $i  = 0.05) { printf "%.1f ",$i}

    0.0 0.1 0.1 0.2 0.2 0.2 0.3 0.3 0.4 0.4 0.5 0.5 0.6 0.7 0.7
    0.8 0.8 0.9 0.9 1.0 1.0

Perl suçlama. C. IEEE yapmalıyız diyor aynı şey bu. 2**31 altında tamsayılar olan sayılar Perl ( 32 bit makineler) hemen hemen matematik tamsayılar gibi çalışırlar. Diğer numaraları garanti edilmez.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • bashirsultani

    bashirsultan

    22 Mart 2010
  • Marques Brownlee

    Marques Brow

    21 Mart 2008
  • TechShowsYou

    TechShowsYou

    3 Mart 2011