好吧,這應該是一個相當簡單的問題,但我不能得到這個權利。我有一個累計金額返回一倍。這些代表的百分比,它不應該是0.0 ..所以我想用d%1保持在1以下。工作罰款爲2.13成爲0.13,或2.98成爲0.98,但3.0成爲0.0不是1.0(100%)..保持雙倍最大值爲1.0
我明顯在做一些根本性錯誤嗎?或者我只是欺騙,並說如果0然後1?
由於
好吧,這應該是一個相當簡單的問題,但我不能得到這個權利。我有一個累計金額返回一倍。這些代表的百分比,它不應該是0.0 ..所以我想用d%1保持在1以下。工作罰款爲2.13成爲0.13,或2.98成爲0.98,但3.0成爲0.0不是1.0(100%)..保持雙倍最大值爲1.0
我明顯在做一些根本性錯誤嗎?或者我只是欺騙,並說如果0然後1?
由於
當累積(百分比)和命中1.0(100%)邊界
sum=sum%1
?1.0
?所以在總結我會做這樣的事情,而不是:
for (...)
{
// some stuff of yours
sum+=...;
if (sum>1.0) sum=1.0;
}
如果你還需要模量1,那麼你可以利用地板
除非和用於別的東西,然後我覺得
for (...)
{
// some stuff of yours
sum+=...;
if (sum>1.0) sum-=floor(sum);
}
如果你的總和可以是負的,然後如果1.0
也不想與ceil
if
和副樓(總和)始終如果你知道目標總
percentage=sum/whole_sum);
%爲模運算符
維基百科:
「在計算中,該模運算髮現由另一人數的除法(有時稱爲模數)後的餘數」
換言之,3模1 = 0,因爲3除1後的餘數爲零。
模數表現如預期 - 當3.0除1.0時沒有餘數。
如果你要處理沒有剩餘的特殊情況:
d %= 1.0
d = d == 0.0 ? 1.0 : d;
2.0給你什麼?我不完全明白你在做什麼。作爲一般規則,在Java中進行數學運算時使用BigDecimal。 – jmf1205 2015-03-19 05:36:46
2%1 = 0 ..它是一個小數運行列表,但每次遇到一個整數時,我希望它導致1如此1,2,3,...,n = 1,1,1,1。 1.1,2.1,...,n.1 = 0.1,0.1等 – mythstified 2015-03-19 05:49:49
你想要'0%1' =>'1'嗎? – 2015-03-19 06:14:49