我想10分一個int,並得到一個整數最接近四捨五入之一,所以 12應該給予1和17應該給2四捨五入除以10將int最近INT
繼承人我的代碼:
int BonusValue;
int Str;
BonusValue = Convert.ToInt32(Math.Round(Convert.ToDouble(Str)/10));
這項工作?
我想10分一個int,並得到一個整數最接近四捨五入之一,所以 12應該給予1和17應該給2四捨五入除以10將int最近INT
繼承人我的代碼:
int BonusValue;
int Str;
BonusValue = Convert.ToInt32(Math.Round(Convert.ToDouble(Str)/10));
這項工作?
是的,這應該工作。
然而,如果您在您的情況5中將舍入步驟的一半添加到整數,則要容易得多。然後,你可以做簡單的整數除法:
BonusValue = (Str+5)/10
附加獎勵:由於中點四捨五入到最接近的偶數,這不會產生令人驚訝的結果。 –
謝謝,我將使用這個 - 它令人驚訝地簡單而有效。 – Bronsoner
然而,它會產生令人驚訝的結果負面投入。如果'Str'爲'-14',則會得到'0'的結果。 –
這樣做是可以的,但它是這樣做的方式效率極低。
團結做你想要什麼,最好的方法是使用內置的方法來做到這些
BonusValue = Mathf.RountToInt(Str/10f);
Debug.Log(Mathf.RoundToInt(17f/10f));
它會工作,但什麼圓型你需要?檢查這個:MidpointRounding Enumeration
試試吧,看看...另外,看看https://www.google.com/#q=c-sharp+math.round+options –
好吧,你有沒有嘗試過測試你的代碼看看它是否有效?你有沒有發現你的代碼有問題? – user1666620
自己測試一下嗎? – ThePerplexedOne