下面中的这段代码
progressBar1.Value = (int)(((i + 1) / 50000.0) * 100);
value的值是0;为什么进度条还能跑???帮帮忙各位
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace 其他控件
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
for (int i = 0; i < 50000; i++)
{
textBox1.Text = i.ToString();
progressBar1.Value = (int)(((i + 1) / 50000.0) * 100);
Application.DoEvents();
}
}
}
}
------解决思路----------------------
progressBar1.Value = (int)(((i + 1) / 50000.0) * 100);
除的是double,不是int,所以最终结果不是0
------解决思路----------------------
很奇怪楼主为什么要除以一个double数!
------解决思路----------------------
int/int,这是整除,49999/50000 =0
int/double,49999/50000.0=0.99998
这样懂了吗,不是你以为得到的0
------解决思路----------------------
做除法前要先转化成浮点运算
------解决思路----------------------
for (int i = 0; i < 50000; i++)
{
textBox1.Text = i.ToString();
progressBar1.Value = (int)(((i + 1) / 50000.0) * 100);
textBox1.Text = ((int)(((i + 1) / 50000.0) * 100)).ToString();
Application.DoEvents();
}
你的计算表达式,就是将0~5000之间的数投影在0~100之间的数轴上的。你怎么能说它一直为0呢?
------解决思路----------------------
当 i+1 >= 500 时 (int)(((i + 1) / 50000.0) * 100) >=1
这就是能跑的原因
------解决思路----------------------
撸主,
for循环,每次 (int)(((i + 1) / 50000.0) * 100)的值是变化的撒
这个是你看到进度的原因
------解决思路----------------------
(int)(((i + 1) / 50000.0) * 100)
这个表达式从0一直跑到100,而且它的结果也确实是整数值!
------解决思路----------------------
是的,很多人没有在意(int)转换。
唉,前边的就不说了,毕竟都有不小心犯糊涂的时候。后边的确实有“从众心理”作怪啊!
------解决思路----------------------
那2/50000.0=0.00004强转不就是0;
int/int,这是整除,49999/50000 =0
int/double,49999/50000.0=0.99998
这样懂了吗,不是你以为得到的0
但是当i>499时,(500/50000.0)*100的值是1啊,所以你的进度条还是会走
------解决思路----------------------

------解决思路----------------------
for (int i = 0; i < 50000; i++)
{
你把代码写在了for循环里,还没加sleep,那么当然一点按钮,值就直接从0变成100了,根本看不到变成1,2,3,的过程
------解决思路----------------------
你可以测试一下,循环50000次需要几毫秒
反正根本不是你眼睛能识别的
------解决思路----------------------
取几个i带入一下就行了....高中的时候数学题各种代入法,做选择题判断题简直神器,把那帮学的比较死脑筋的同学唬的一愣一愣的
------解决思路----------------------
我的问题好像没有解决哦
你有没有自己动手运行一下 #7 楼的程序呢?
如不自己动手而只是动嘴,你是自己的解决问题方式让你跨不进门槛里。