如何制作一个百分比

时间:2016-09-26 11:16:50

标签: c# percentage

我非常擅长编码如何更改此代码:

IEnumerator SpawnWave()
    {
        waveIndex++;

        for (int i = 0; i < waveIndex; i++)
        {
            SpawnEnemy();
            yield return new WaitForSeconds(0.5f);
        }
    }

添加WaveIndex值的10%的代码。

2 个答案:

答案 0 :(得分:0)

可能比预期更复杂

对于故障安全答案,我错过了waveIndex的类型。因为它被称为&#34; ...索引&#34;并且使用了运算符++,我假设它是一个整数值(waveIndex的类型为int)。

<强> TL; DR

使用waveIndex = (int)Math.Ceiling(1.1 * waveIndex);而不是waveIndex++;并确保waveIndex始终大于0.如果乘法的结果不是整数,则该值将向上舍入到下一个更大的整数值。

警告

如果你总是向waveIndex添加10%而waveIndex只能存储整数值(例如因为它是int类型),你永远不会从1到2,因为舍入效应。

因此,您必须使用waveIndex的其他类型而不是int,使用Math.Ceiling并使用1 {1}或更大的waveIndex,使用Math.Round并且从5或更大的waveIndex开始,或者您必须从10个或更大的waveIndex开始。

整数值的详细答案

有很多表达式会增加10%的数值。但我只会介绍其中的两个 - 希望是最简单的,帮助您学习如何编码。

我认为waveIndex的类型是整数。因此,您必须在计算后将结果强制转换为整数。这是通过在数学表达式周围添加括号并在左括号前添加(int)来完成的。

// First example for adding 10% to an integer.
waveIndex = (int)(1.1 * waveIndex);

// Second example for adding 10% to an integer.
waveIndex = (int)(waveIndex + 0.1 * waveIndex);

默认情况下,结果将向下舍入到下一个较小的整数值。若要更改此行为,您可以使用以下语句之一。

// Rounds e.g. 1.4 down to 1 and 1.5 up to 2.
waveIndex = (int)Math.Round(1.1 * waveIndex);

// Rounds e.g. 1.1 up to 2.
waveIndex = (int)Math.Ceiling(1.1 * waveIndex);

由于Math.CeilingMath.Round返回double类型的结果,因此必须再次使用(int)将其转换为整数。

所以你的完整代码就是例如看起来像以下版本。它将{10}增加到waveIndex并将值向下舍入到下一个较小的整数。

IEnumerator SpawnWave()
{
    waveIndex = (int)Math.Round(1.1 * waveIndex);

    for (int i = 0; i < waveIndex; i++)
    {
        SpawnEnemy();
        yield return new WaitForSeconds(0.5f);
    }
}

答案 1 :(得分:-1)

- open the admin console
- the Applications and uninstall your app.
- stop the server.
- right click the server and choose add of remove projects and then remove the app from there
- start the server. and deploy your ear again. 

还有什么可说的?我通过我的宏伟代码说话!