Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 百分比计算不起作用?_C#_.net 4.0_Percentage - Fatal编程技术网

C# 百分比计算不起作用?

C# 百分比计算不起作用?,c#,.net-4.0,percentage,C#,.net 4.0,Percentage,这是一件非常有趣的事情,不知道为什么会发生,但当我发生时: (item.Count / query.Count) * 100 (item.Count * 100) / query.Count 它不会给我任何错误,只需回答0,当我回答时: (item.Count / query.Count) * 100 (item.Count * 100) / query.Count 它工作得很好,我还缺什么 我遇到的另一个问题是将其输出格式化为字符串: double perc = (item.Count

这是一件非常有趣的事情,不知道为什么会发生,但当我发生时:

(item.Count / query.Count) * 100
(item.Count * 100) / query.Count
它不会给我任何错误,只需回答0,当我回答时:

(item.Count / query.Count) * 100
(item.Count * 100) / query.Count
它工作得很好,我还缺什么

我遇到的另一个问题是将其输出格式化为字符串:

double perc = (item.Count * 100) / query.Count;
MessageBox.Show(perc.ToString("P5"));
“不工作”给了我一大笔钱,比如
33333.33
或者
33000.00
,我希望它看起来像这样
33.33%
,我尝试了几种变体,但由于某种原因,如果我将括号设置为双倍,它将不允许我获得
.33
,如果我不这样做,它将不给我
.33

(item.Count / query.Count) * 100
正在进行整数除法,因此(item.Count/query.Count)的计算结果将始终为零。在除法前投双打可以解决这个问题

对于格式问题,请尝试使用String.format

例如,
string result=string.Format(“string={0:0.0%}”,
perc)


在这里可以找到更多字符串格式设置方法:

item.Count和query.Count是整数,请将它们像(float)item.Count一样强制转换为整数,否则它将进行整数除法,并始终舍入为0

((float)item.Count / (float)query.Count) * 100;

100
更改为
100.00
。它需要知道它不是整数 尝试:


您没有在除法之前将
(item.Count/query.Count)
转换为双精度。因此,出于某种原因(至少在我的代码中),int*double是0。执行
((double)item.Count/(double)query.Count)
并将
100
更改为
100.0
或将其更改为
(double)100
。但是,我建议使用后者,因为100在运行时而不是在编译时被转换为double。

不要乘以100,它会为您做到这一点。执行除法时,只需强制转换为
double

double perc = (double)item.Count / (double)query.Count;
MessageBox.Show(perc.ToString("P5"));
尝试执行(item.Count*100d)指定100为双精度的“d”。将返回一个double,也将返回被query.Count除法


100f表示浮点百次

@Yatrix忘记无用的函数调用。Just do
(double)intval
Cast是一个隐式函数调用,所以它是所有的首选项。+1 for the info没有意识到它,但是有一个问题,它将打印
33.3333
,我希望它在简历中打印
33.33
100.00
。###
和%符号。@Guapo-P指定以百分比显示它。数字指定精度。因此,要仅显示两位数字,请使用
“P2”
而不是
“P5”
,即
perc.ToString(“P2”)