我想计算一个百分比。我的代码是:
Bot.Log("[ KEYBOT ] The total is " + (suctrades * totaltrades ) / 100 + "% !");
如果我这样做,我只会得到0.我做错了什么?
答案 0 :(得分:0)
尝试:
Bot.Log("[ KEYBOT ] The total is " + ((double)suctrades * totaltrades ) / 100 + "% !");
我认为 suctrades 和 totaltrades 不是十进制类型。这应该解决这个问题,因为在评估表达式时类型传播。
答案 1 :(得分:0)
可能suctrades * totaltrades
仍然是int
。最简单的方法可能是将代码更改为:
((double)suctrades) * totaltrades/100
或者
suctrades * totaltrades/100.0
强制使用double
代替int
答案 2 :(得分:0)
Int是整数类型;除以两个整数执行整数除法,即小数部分被截断,因为它不能存储在结果类型中(也是int!)。相比之下,十进制有一个小部分。通过调用Decimal.Divide,您的int参数将隐式转换为Decimal。
您可以通过显式地将至少一个参数强制转换为浮点类型来强制对int参数进行非整数除法,例如:100.0m这是转换为十进制!
decimal result = suctrades * totaltrades/100.0m