c#中的划分不符合我的预期

You*_*nes 4 c# double scale

我试着写一些东西让我的图像正确显示.我有2个号码"breedtePlaatje"和"hoogtePlaatje".当我加载那些带有值的2个变量时,我得到"800"和"500",我希望"verH"为(500/800)= 0,625.那个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;
    }
}
Run Code Online (Sandbox Code Playgroud)

关于我的方法的任何提示都很可爱.

Arv*_*rve 11

将int除以int得到一个int.

double verH = (hoogtePlaatje/breedtePlaatje);
Run Code Online (Sandbox Code Playgroud)

赋值的右侧是整数值.

将breedtePlaatje和/或hoogtePlaatje改为加倍,您将得到您期望的答案.


Ode*_*ded 6

整数除法将导致返回整数作为除法结果.

您需要将除法的一个参数设置为浮点数,以使结果成为浮点数.您可以通过将其中一个转换为浮点数来完成此操作.

double verH = (double)hoogtePlaatje/breedtePlaatje;
Run Code Online (Sandbox Code Playgroud)

要么

double verH = hoogtePlaatje/(double)breedtePlaatje;
Run Code Online (Sandbox Code Playgroud)

有关除法的信息,请参阅C#规范.