1
   float percentrelation = Individualrelatonshipdegree / relationshipdegree * 100;

この単純な操作は、Individualrelationshipdegree変数の値が19で、relationshipdegreeが35のときに0を返しますが、それでも0を返します。この問題を理解していない。どんな助けでもありがたいです。

4

4 に答える 4

4

あなたは整数除算をしています。試す

float percentrelation = 
    1.0f * Individualrelatonshipdegree / relationshipdegree * 100;
于 2012-11-27T16:35:56.963 に答える
4

計算順序を見てください。19を35で除算したいので、0です。次に0と100を掛けます。これも0です。
したがって、型キャストによってこの式の最初の変数をfloatにすることができます。

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

UPD型キャストの瞬間を説明する必要があります。計算順序は左から右です。また、integer(int、byte、long longなど)およびfloat(float、doubleなど)オペランドを使用した操作では、どちらもfloat型に型キャストされるという規則があります。そのため、最初のオペランドに1つの型キャストが必要です。そのため、1.0f*を使用した別の回答your expressionも正常に機能します。ほんの2つの少し異なる方法。

于 2012-11-27T16:38:37.870 に答える
3

2つの変数は整数ですか?はいの場合は、最初にそれらをキャストすることをお勧めします。

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

また、floatはあまり正確ではないことに注意してください。10進数のisnteadの使用を検討してください。

于 2012-11-27T16:36:09.553 に答える
0

floatをご覧ください(C#リファレンス)

基本的にあなたは行方不明です.F

例えば。float x = 2.5F/3.5;

于 2012-11-27T16:39:42.413 に答える