按预先确定的数量拆分一个浮点数,这些浮点数加起来就是浮点数

问题描述 投票:0回答:1

我希望创建一个基本上执行以下操作的脚本:-

  • 将给定的浮点数拆分为 x 个浮点数(特别是分成不同的值)
  • 每个值必须是0.05的增量(例如2.65、1.25、18.50)
  • x 个浮点数加起来必须是给定的浮点数

IE 应该是这样的:

Total float = 2.50
Amount of splits = 2
New float array = [2, 0.50]

or

Total float = 4.00
Amount of splits = 4
New float array = [1, 2, 0.25, 0.75]

我目前没能尝试太多。我一直在想办法让它发挥作用,但我不确定最好的方法。

编辑:我能够取得一些进展,但我有一个小问题,有时如果我使用的数字太小,它会在我不想要的列表中添加一个 0 或两个。


public void SplitWinnings()
{
    splitAmounts = new float[loseThreshold - 1];
    while(splitAmounts.Sum() < totalWinAmount)
    {
        int rng = Random.Range(0, splitAmounts.Length);
        splitAmounts[rng] += 0.05f;
        splitAmounts[rng] = Mathf.Round(splitAmounts[rng] * 100f) / 100f;
    }
}

c# unity3d division
1个回答
0
投票

正如@Jeroen Mostert 所提到的,这适用于较低数量的拆分值。但实际上我正在寻找什么。 :)

public void SplitWinnings()
{
    splitAmounts = new float[loseThreshold - 1];
    while(splitAmounts.Sum() < totalWinAmount)
    {
        int rng = Random.Range(0, splitAmounts.Length);
        splitAmounts[rng] += minIncrement;

        float splitFloat = (Mathf.Round(splitAmounts[rng] * 100f) / 100f);

        if (splitFloat > 0)
        {
            splitAmounts[rng] = splitFloat;
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.