题
我试着去写点东西让我的照片显示正确。我有2个数字"breedtePlaatje"和"hoogtePlaatje".当我加载的那2个变量与价值观,我回来"800"和"500"我希望"verH"应(500/800)=0,625.寿值verH=0..
这是code:
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;
}
}
任何提示关于我的方法将是可爱的。
解决方案
除int通过int提供了一个int.
double verH = (hoogtePlaatje/breedtePlaatje);
右手边的分配是一个整数值。
改变breedtePlaatje和/或hoogtePlaatje倍,你会得到回答你的期望。
其他提示
整的划分将导致在整数正在返回该司的结果。
你需要的参数之一,该司是一个浮为了使结果是一个浮动。你可以这样做,铸造一个他们中的一个浮动。
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 ;
我从来没有使用,但可能你需要投的一个变量的两倍,这样的:
double verH = (double)hoogtePlaatje/breedtePlaatje;
试试这个:
double verH = double (hoogtePlaatje) / breedtePlaateje;
如果你把一个int通过一个int,你会得到一个截断的答案。铸他们中的一个达到一个双人,和整个司的工作将作为一倍。
不隶属于 StackOverflow