第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何使四舍五入的百分比加起來(lái)等于100%

如何使四舍五入的百分比加起來(lái)等于100%

考慮以下四個(gè)百分比,以float數(shù)字表示:    13.626332%    47.989636%     9.596008%    28.788024%   -----------   100.000000%我需要將這些百分比表示為整數(shù)。如果僅使用Math.round(),我最終將占101%。14 + 48 + 10 + 29 = 101如果使用parseInt(),我最終將獲得97%的收益。13 + 47 + 9 + 28 = 97有什么好的算法可以將任意數(shù)量的百分比表示為整數(shù),而總數(shù)量仍保持100%?編輯:在閱讀了一些評(píng)論和答案之后,顯然有很多方法可以解決此問(wèn)題。在我看來(lái),為了忠于數(shù)字,“正確”的結(jié)果是使總誤差最小化,該誤差由相對(duì)于實(shí)際值引入的誤差舍入多少來(lái)定義:        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)在平局(3.33、3.33、3.33)的情況下,可以做出任意決定(例如3、4、3)。
查看完整描述

3 回答

?
開(kāi)滿(mǎn)天機(jī)

TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超13個(gè)贊

由于這里的答案似乎都無(wú)法正確解決,因此這是我使用underscorejs的半混淆版本:


function foo(l, target) {

    var off = target - _.reduce(l, function(acc, x) { return acc + Math.round(x) }, 0);

    return _.chain(l).

            sortBy(function(x) { return Math.round(x) - x }).

            map(function(x, i) { return Math.round(x) + (off > i) - (i >= (l.length + off)) }).

            value();

}


foo([13.626332, 47.989636, 9.596008, 28.788024], 100) // => [48, 29, 14, 9]

foo([16.666, 16.666, 16.666, 16.666, 16.666, 16.666], 100) // => [17, 17, 17, 17, 16, 16]

foo([33.333, 33.333, 33.333], 100) // => [34, 33, 33]

foo([33.3, 33.3, 33.3, 0.1], 100) // => [34, 33, 33, 0]


查看完整回答
反對(duì) 回復(fù) 2019-10-15
?
守候你守候我

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超10個(gè)贊

只要您不擔(dān)心依賴(lài)原始十進(jìn)制數(shù)據(jù),有許多方法可以做到這一點(diǎn)。


第一種,也許是最受歡迎的方法是最大剩余法


基本上是:


四舍五入

求和與100之差

通過(guò)以小數(shù)部分的降序向項(xiàng)目加1來(lái)分配差異

在您的情況下,它將如下所示:


13.626332%

47.989636%

 9.596008%

28.788024%

如果取整數(shù)部分,則得到


13

47

 9

28

總計(jì)為97,而您想再添加三個(gè)?,F(xiàn)在,您看一下小數(shù)部分,它們是


.626332%

.989636%

.596008%

.788024%

并選擇最大的,直到總數(shù)達(dá)到100。這樣您將獲得:


14

48

 9

29

另外,您可以選擇顯示小數(shù)點(diǎn)后一位而不是整數(shù)。因此,數(shù)字將是48.3和23.9等。這將使方差從100下降很多。


查看完整回答
反對(duì) 回復(fù) 2019-10-15
?
拉莫斯之舞

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超10個(gè)贊

做到這一點(diǎn)的“最佳”方法可能是保持您所在位置的連續(xù)(非整體)統(tǒng)計(jì)并舍入該值,然后將其與歷史記錄一起使用以確定應(yīng)該使用什么值。例如,使用您提供的值:


Value      CumulValue  CumulRounded  PrevBaseline  Need

---------  ----------  ------------  ------------  ----

                                  0

13.626332   13.626332            14             0    14 ( 14 -  0)

47.989636   61.615968            62            14    48 ( 62 - 14)

 9.596008   71.211976            71            62     9 ( 71 - 62)

28.788024  100.000000           100            71    29 (100 - 71)

                                                    ---

                                                    100

在每個(gè)階段,您都不會(huì)對(duì)數(shù)字本身進(jìn)行四舍五入。取而代之的是,您對(duì)累計(jì)值進(jìn)行四舍五入,并計(jì)算出從上一個(gè)基線(xiàn)達(dá)到該值的最佳整數(shù)-該基線(xiàn)是前一行的累積值(四舍五入)。


之所以可行,是因?yàn)槟粫?huì)在每個(gè)階段都丟失信息,而是更智能地使用信息?!罢_”的四舍五入值在最后一列中,您可以看到它們的總和為100。


查看完整回答
反對(duì) 回復(fù) 2019-10-15
  • 3 回答
  • 0 關(guān)注
  • 4273 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)