Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.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#_String_Double_Percentage - Fatal编程技术网

C# 如何计算百分比

C# 如何计算百分比,c#,string,double,percentage,C#,String,Double,Percentage,我想计算一个百分比。我的代码是: Bot.Log("[ KEYBOT ] The total is " + (suctrades * totaltrades ) / 100 + "% !"); 如果我这样做,我只得到0。我做错了什么?试试: Bot.Log("[ KEYBOT ] The total is " + ((double)suctrades * totaltrades ) / 100 + "% !"); 我假设suctrades和totaltrades不是十进制类型。这应该可以解决

我想计算一个百分比。我的代码是:

Bot.Log("[ KEYBOT ] The total is " + (suctrades * totaltrades ) / 100 + "% !");
如果我这样做,我只得到0。我做错了什么?

试试:

Bot.Log("[ KEYBOT ] The total is " + ((double)suctrades * totaltrades ) / 100 + "% !");

我假设suctradestotaltrades不是十进制类型。这应该可以解决由于表达式求值时类型传播造成的问题。

可能
suctrades*totaltrades
仍然是一个
int
。最简单的方法可能是将代码更改为:

((double)suctrades) * totaltrades/100


强制使用
double
而不是
int

int是一种整数类型;将两个整数除法执行整数除法,即小数部分被截断,因为它不能存储在结果类型(也是int!)中。相比之下,十进制有一个小数部分。通过调用Decimal.Divide,int参数将隐式转换为小数

通过将至少一个参数显式转换为浮点类型,可以对int参数强制执行非整数除法,例如:100.0m这是转换为十进制

decimal result = suctrades * totaltrades/100.0m

在乘法之前将值强制转换为
double
,它是否更像
String.Format(“总数为{0:n2}%!”,((suctrades/(double)totaltrades)*100.0))
??我相信你的基数也是错误的,除非这样的交易*总交易不能超过100;)谢谢你!这对我很有帮助,所以你不需要感谢,只要标记我的答案或投票就可以了
decimal result = suctrades * totaltrades/100.0m