Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#中的除法并不像我预期的那样_C#_Double_Scale - Fatal编程技术网

c#中的除法并不像我预期的那样

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

我试图写一些东西,让我的图像显示正确。 我有两个号码“breedtePlaatje”和“hoogtePlaatje”。当我用返回的值“800”和“500”加载这两个变量时,我期望“verH”为(500/800)=0625。Tho 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;
    }
}
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 ;