所以我有一些代码基本上是:
int foo = bar * (percentage / 100);
其中foo表示bar的百分比。因此,如果bar为100且百分比为20,我们预计20/100 = 0.2所以100 * 0.2 = 20 ......但事实并非如此。每一次,没有失败foo = 0.我想'也许它不是一个整数'所以我试过:
float foo = bar * (percentage / 100);
foo仍然= 0.任何帮助都会受到赞赏,因为我从未在数学方面表现出色,但我很确定我对这一点没有错误
答案 0 :(得分:1)
将其更改为小数float foo = bar * (percentage / 100.0);
答案 1 :(得分:1)
表达式(percentage / 100)
的类型为整数,因此只要结果舍入为0,它就会为0.
如果将表达式中的某个数字更改为处理小数的类型。该表达式将改为评估该类型。
(percentage / 100.0)
然后当你将它与bar
相乘时,该表达式也将是int
而不是int foo = (bar * percentage) / 100;
。
或者,您可以更改执行顺序
bar * percentage
会有一些精度损失,但除非{{1}}小于100,否则不应该为0。
答案 2 :(得分:0)
试试这个:
float foo = (float)bar * ((float)percentage / 100.0);
要进行整理,请执行以下操作:
in foo = (int)Math.Ceiling((float)bar * ((float)percentage / 100.0));
答案 3 :(得分:0)
这里的问题是整数除法。你需要这样做:
int foo = bar * (percentage / 100.0);
这告诉编译器你想要一个double或float,而不是一个0或1的int。
答案 4 :(得分:0)
我认为问题在于(百分比/ 100)。它是整数,所以20/100 = 0。 源应该:var foo = bar *(百分比/ 100.0);
我希望这很有用