c#中的除法并不像我预期的那样
我试图写一些东西,让我的图像显示正确。 我有两个号码“breedtePlaatje”和“hoogtePlaatje”。当我用返回的值“800”和“500”加载这两个变量时,我期望“verH”为(500/800)=0625。Tho verH的值=0 代码如下:c#中的除法并不像我预期的那样,c#,double,scale,C#,Double,Scale,我试图写一些东西,让我的图像显示正确。 我有两个号码“breedtePlaatje”和“hoogtePlaatje”。当我用返回的值“800”和“500”加载这两个变量时,我期望“verH”为(500/800)=0625。Tho verH的值=0 代码如下: int breedtePlaatje = Convert.ToInt32(imagefield.Width); int hoogtePlaatje = Convert.ToInt32(imagefield.Height); //Uitga
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-breedtePlaatje=Convert.ToInt32(imagefield.Width);
int hoogtePlaatje=转换为32(图像字段高度);
//Uitgaan van breedte plaatje
如果(布里德特普拉杰>胡特普拉杰)
{
双壁=(hoogtePlaatje/breedtePlaatje);
int vHeight=转换为32(verH*239);
MoptsMiddle.高度=VHHeight;
中等宽度=239;
//您好,我是克莱恩·克莱杰·克莱杰·兰登·克莱恩,我是普拉杰·泽尔夫·因斯特伦
如果(hoogtePlaatje<179)
{
中等高度=179;
中等宽度=239;
}
}
关于我的方法的任何提示都会很有趣。用int除以int得到一个int
double verH = (hoogtePlaatje/breedtePlaatje);
赋值的右侧是一个整数值
将breedtePlaatje和/或hoogtePlaatje更改为double,您将得到您期望的答案。我从未使用过C#,但可能需要将其中一个变量转换为double,如下所示:
double verH = (double)hoogtePlaatje/breedtePlaatje;
整数除法将返回一个整数作为除法结果 您需要将除法的一个参数设置为浮点,才能将结果设置为浮点。你可以通过将其中一个抛到浮子上来实现这一点
double verH = (double)hoogtePlaatje/breedtePlaatje;
或
请参阅有关部门的信息。尝试以下方法:
double verH = double (hoogtePlaatje) / breedtePlaateje;
如果你把一个整数除以一个整数,你会得到一个截断的答案。将其中一个整数转换为一个双精度整数,整个除法将以双精度进行。当您将两个整数除法时,C#使用,其中小数部分将被丢弃。在您的情况下,您将获得:
500 / 800 = 0 + 5/8
丢弃小数部分后,得出:
500 / 800 = 0
要获得浮点除法,根据所需的精度级别,将其中一个参数强制转换为double
、float
或decimal
,这将导致另一个参数隐式转换为相同类型,并使用浮点规则而不是整数规则执行除法,例如
double result = (double)breedtePlaatje / hoogtePlaatje ;
double result = (double)breedtePlaatje / hoogtePlaatje ;