C# 如何以MB为单位显示长单位,并在进度栏中显示进度百分比?
我有一句话:C# 如何以MB为单位显示长单位,并在进度栏中显示进度百分比?,c#,.net,winforms,C#,.net,Winforms,我有一句话: backgroundWorker1.ReportProgress((int)obj.BytesSent); BytesSent是一个长变量。 我需要将它转换为(int)来报告它 现在在backgorund1 progresschanged事件中,我想将其显示为MB。 例如,0.3MB 0.7MB 33MB代替显示字节 private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEvent
backgroundWorker1.ReportProgress((int)obj.BytesSent);
BytesSent是一个长变量。
我需要将它转换为(int)来报告它
现在在backgorund1 progresschanged事件中,我想将其显示为MB。
例如,0.3MB 0.7MB 33MB代替显示字节
private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
toolStripStatusLabel2.Text = e.ProgressPercentage.ToString();
}
我还想显示发送了多少MB,还想在进度栏中以百分比显示进度。要以MB显示大小,您应该以B中的大小除以1024^2。要以百分比显示进度,您必须以下载的部分大小除以文件大小 如何将其显示为MB而不是字节
如果你每10位移动一个数字,你的大小就会变大一个单位,所以
10
是Kb,20
是Mb,30
是字节,依此类推。那么如果你用1除以你的数字,我怎么能把它显示为Mb而不是字节呢?
试着除以兆字节中的字节数,也就是1024。这很简单这是一个错误的数字。@Jashaszun这是一个错误的数字。你的意思是1048576,但即使是这个数字也会被一些人认为是错误的,说它应该是1000000。@hvd哈哈,这让人尴尬……是的,这就是我的意思。另外,MB通常不是被定义为1024kB,或者(1024*1024)吗字节,而MBit定义为1000000字节?@Jashaszun MBit是位的数量,而不是字节,因此是“位”在它里面。:)1048576和1000000字节有不同的前缀,但尽管有传统,官方的前缀说1MB是1000000字节,而1MiB是1048576字节引入的。但是没有普遍的一致意见。这只是糟糕的代码。你想告诉用户“工作完成了一半”,您不能使用BytesSent执行此操作。它需要是100*sent/total。单位不重要。如果您不知道total,则无法有意义地显示进度。Scott是这样吗?double mbSent=((double)obj.BytesSent)/(1 totalBytes是以字节为单位的文件大小?对于第一部分,是的,但是您说要执行0.3MB
,如果您要强制转换为int
,则无法执行此操作;对于第二部分,如果您发送文件,则是以字节为单位的文件大小。
toolStripStatusLabel1.Text = obj.Status.ToString();
backgroundWorker1.ReportProgress((int)obj.BytesSent);
}
double mbSent = ((double)obj.BytesSent) / (1 << 20);
double percentComplete = ((double)obj.BytesSent) / totalBytes * 100;