質問
イムは、正しく表示するために私の画像を得るために何かを書くしようとしています。 私は2個の数字「breedtePlaatje」と「hoogtePlaatje」を持っています。 iは値を有するもの2 VARSをロードするときに私が取り戻す「800」と「500」i「はverH」は(800分の500)= 0625であることを期待します。 verH = 0 ..
の値はカントーこのコードは次のとおりです。
int breedtePlaatje = Convert.ToInt32(imagefield.Width);
int hoogtePlaatje = Convert.ToInt32(imagefield.Height);
//Uitgaan van breedte plaatje
if (breedtePlaatje > hoogtePlaatje)
{
double verH = (hoogtePlaatje/breedtePlaatje);
int vHeight = Convert.ToInt32(verH * 239);
mOptsMedium.Height = vHeight;
mOptsMedium.Width = 239;
//Hij wordt te klein en je krijgt randen te zien, dus plaatje zelf instellen
if (hoogtePlaatje < 179)
{
mOptsMedium.Height = 179;
mOptsMedium.Width = 239;
}
}
私のアプローチに関するすべてのヒントが美しいaswellになります。
解決
int型でint型を割ると、INTを与えます。
double verH = (hoogtePlaatje/breedtePlaatje);
の割り当ての右側には、整数値である。
変更breedtePlaatjeおよび/またはhoogtePlaatjeは倍増すると、あなたが期待する答えを得るでしょう。
他のヒント
整数除算は除算結果として返される整数になります。
あなたはfloat型であることを結果ためにフロートする部門のパラメータのいずれかが必要。あなたはフロートにそれらのいずれかをキャストすることにより、これを行うことができます。
double verH = (double)hoogtePlaatje/breedtePlaatje;
または
double verH = hoogtePlaatje/(double)breedtePlaatje;
部門に関する C#の仕様を参照してください。ます。
、C#が小数部分は廃棄さ整数除算を使用し。あなたのケースでは、取得している:
500 / 800 = 0 + 5/8
どの、小数部分を破棄し、与えます:
500 / 800 = 0
浮動小数点除算取得するには、他の引数の原因になりますあなたが必要とする精度のレベルに応じてdouble
、float
またはdecimal
のいずれかの引数の一つは、暗黙的に同じ型に変換するキャストや部門が使用して実施代わりに、整数ルールの浮動小数点ルール、例えば、
double result = (double)breedtePlaatje / hoogtePlaatje ;
私はC#を使用したことがない、おそらくあなたは、このように、倍増する変数の一つをキャストする必要があります。
double verH = (double)hoogtePlaatje/breedtePlaatje;
これを試してください:
double verH = double (hoogtePlaatje) / breedtePlaateje;
あなたはint型でint型を分割する場合は、、あなたは切り捨て答えを得るでしょう。二重にそれらのいずれかをアップキャストし、部門全体では二重のように行われます。