SORU
20 Kasım 2012, Salı


Nasıl yuvarlak yüzdeleri %100'e ekleme yapmak için

Dört yüzdeleri aşağıda, float sayı olarak temsil düşünün:

    13.626332%
    47.989636%
     9.596008%
    28.788024%
   -----------
   100.000000%

Tam sayılar olarak bu oranlar temsil etmek istiyorum. Eğer ben sadece Math.round(), kullanılan 101 toplam% ile bitiriyorum.

14   48   10   29 = 101

Eğer parseInt(), kullanırsam kadar 97% toplam ile bitiriyorum.

13   47   9   28 = 97

Hala 0 toplam korurken tam sayı olarak yüzde herhangi bir sayıyı temsil etmek için iyi bir algoritma nedir?


Edit: Yorumlar ve Cevaplar bazılarını okuduktan sonra, açıkça bu çözme hakkında gitmek için birçok yol vardır.

Aklımda, numaraları sadık kalmak için, "doğru" sonucu, genel hata, hata, yuvarlama gerçek değeri arasındaki fark getirecek nasıl tanımladığı en aza indirir biridir:

        value  rounded     error               decision
   ----------------------------------------------------
    13.626332       14      2.7%          round up (14)
    47.989636       48      0.0%          round up (48)
     9.596008       10      4.0%    don't round up  (9)
    28.788024       29      2.7%          round up (29)

Beraberlik durumunda (3.33, 3.33, 3.33) keyfi bir karar (örneğin 3, 4, 3)yapılabilir.

CEVAP
20 Kasım 2012, Salı


Sadece bunu yapmak için birçok yolu vardır, orijinal ondalık veri bağımlılığı konusunda endişeli olmamak şartıyla.

İlk ve belki de en popüler yöntem Largest Remainder Method olurdu

Temelde olan:

  1. Yuvarlama her şeyi aşağı
  2. Toplamı 100 farkı alınıyor
  3. Ondalık bölümlerinin azalan kalemler için 1 ekleyerek fark dağıtma

Senin durumunda, bu gibi olurdu:

13.626332%
47.989636%
 9.596008%
28.788024%

Eğer tamsayı parçaları alırsan, alırsın

13
47
 9
28

97, ve üç tane daha eklemek istediğiniz işaret ediyor. Şimdi, hangi ondalık parçaları, bak

.626332%
.989636%
.596008%
.788024%

ve toplam 100 ulaşana kadar büyük olanları alın. Alabilmen:

14
48
 9
29

Alternatif olarak, sadece bir ondalık tamsayı değerleri yerine göstermek için seçti. Numaraları olan 48,3 ve 23.9 vb. Bu çok 100 varyans damla olur.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BruBearBaby

    BruBearBaby

    25 Ocak 2011
  • SavageLuxxxGaming - Daily NBA 2K15 & NBA Live 15 Enjoy And Subscribe!

    SavageLuxxxG

    11 Ocak 2013
  • Video Copilot

    Video Copilo

    21 EYLÜL 2006

İLGİLİ SORU / CEVAPLAR