如何将进度条的值更改为双倍?

How to change the value of a progress bar to a double?

我正在尝试以进度条进度的特定增量播放声音。进度条的最大值为 80,由间隔为 100 的计时器控制(因此总持续时间为 8 秒)。在第一种情况下,声音播放是因为 80/16 = 5 是一个整数,但没有其他声音播放。如何将进度条值转换为双精度值?或者这甚至是正确的轨道?谢谢!

            if (checkBox1.Checked && progressBar1.Value == (progressBar1.Maximum * (1/16)))
                hiphopkick.Play();
            if (checkBox1.Checked && progressBar1.Value == (progressBar1.Maximum * (2 / 16)))
                hiphopkick.Play();
            if (checkBox1.Checked && progressBar1.Value == (progressBar1.Maximum * (3 / 16)))
                hiphopkick.Play();
            if (checkBox1.Checked && progressBar1.Value == (progressBar1.Maximum * (4 / 16)))
                hiphopkick.Play();
            if (checkBox1.Checked && progressBar1.Value == (progressBar1.Maximum * (5 / 16)))
                hiphopkick.Play();
            if (checkBox1.Checked && progressBar1.Value == (progressBar1.Maximum * (6 / 16)))
                hiphopkick.Play();
            if (checkBox1.Checked && progressBar1.Value == (progressBar1.Maximum * (7 / 16)))
                hiphopkick.Play();
            if (checkBox1.Checked && progressBar1.Value == (progressBar1.Maximum * (8 / 16)))
                hiphopkick.Play();
            if (checkBox1.Checked && progressBar1.Value == (progressBar1.Maximum * (9 / 16)))
                hiphopkick.Play();
            if (checkBox1.Checked && progressBar1.Value == (progressBar1.Maximum * (10 / 16)))
                hiphopkick.Play();
            if (checkBox1.Checked && progressBar1.Value == (progressBar1.Maximum * (11 / 16)))
                hiphopkick.Play();
            if (checkBox1.Checked && progressBar1.Value == (progressBar1.Maximum * (12 / 16)))
                hiphopkick.Play();
            if (checkBox1.Checked && progressBar1.Value == (progressBar1.Maximum * (13 / 16)))
                hiphopkick.Play();
            if (checkBox1.Checked && progressBar1.Value == (progressBar1.Maximum * (14 / 16)))
                hiphopkick.Play();
            if (checkBox1.Checked && progressBar1.Value == (progressBar1.Maximum * (15 / 16)))
                hiphopkick.Play();
            if (checkBox1.Checked && progressBar1.Value == (progressBar1.Maximum * (16 / 16)))
                hiphopkick.Play();

首先使用十进制,而不是双精度。

Binary floating point and .NET

其次,当你将两个整数相除时,结果是整数。所以12/16 = 0。为了让它正常工作,你应该这样写:

var decimalRes = progressBar1.Maximum * (13 / (decimal)16);