算术运算不起作用

时间:2012-11-27 16:34:33

标签: c# .net

   float percentrelation = Individualrelatonshipdegree / relationshipdegree * 100;

这个简单的操作返回0,而Individualrelationshipdegree变量中的值是19,而relationshipdegree中的值是35.但它仍然返回0.不明白这个问题。任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:4)

你正在进行整数除法。尝试

float percentrelation = 
    1.0f * Individualrelatonshipdegree / relationshipdegree * 100;

答案 1 :(得分:4)

只需查看计算顺序即可。你想将19除以35.所以它是0.然后乘以0和100.它也是0 因此,您可以通过类型转换尝试为此表达式创建第一个变量float:

float percentrelation = (float)Individualrelatonshipdegree / relationshipdegree * 100;

UPD 需要解释类型转换时刻。计算顺序是从左到右。我们有一个规则,在操作中使用整数(int,byte,long long等)和float(float,double等)操作数,它们都是类型转换为float类型。这就是为什么我们只需要在第一个操作数上进行一次类型转换。这就是为什么1.0f * your expression的另一个答案也可以正常工作。只是两种不同的方式。

答案 2 :(得分:3)

这两个变量是否整数?如果是,您可能希望先抛出它们。

float percentrelation = (float) Individualrelatonshipdegree / (float) relationshipdegree * 100;

另外,请注意浮动不是很精确。考虑使用decimal isntead。

答案 3 :(得分:0)

查看float (C# Reference)

您遗漏了.F

例如。 float x = 2.5F/3.5;