5

我试图写一些东西来让我的图像正确显示。我有 2 个号码“breedtePlaatje”和“hoogtePlaatje”。当我用我得到的值加载这两个变量时“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;
    }
}

关于我的方法的任何提示也会很可爱。

4

5 回答 5

11

int 除以 int 得到一个 int。

double verH = (hoogtePlaatje/breedtePlaatje);

赋值的右边是一个整数值。

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

于 2010-03-08T11:07:01.273 回答
7

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

您需要除法的参数之一是浮点数才能使结果为浮点数。您可以通过将其中一个转换为浮点数来做到这一点。

double verH = (double)hoogtePlaatje/breedtePlaatje;

或者

double verH = hoogtePlaatje/(double)breedtePlaatje;

请参阅有关除法的 C# 规范。

于 2010-03-08T11:09:58.590 回答
4

当您将两个整数相除时,C# 使用整数除法,其中小数部分被丢弃。在你的情况下,你得到:

500 / 800 = 0 + 5/8 

其中,丢弃小数部分,给出:

500 / 800 = 0

要获得浮点除法,请将其中一个参数转换为doublefloatdecimal根据您需要的精度级别,这将导致另一个参数被隐式转换为相同的类型,并使用浮点规则而不是整数进行除法规则,例如

double result = (double)breedtePlaatje  / hoogtePlaatje ;
于 2010-03-08T11:10:51.680 回答
2

我从未使用过 C#,但可能您需要将其中一个变量转换为 double,如下所示:

double verH = (double)hoogtePlaatje/breedtePlaatje;
于 2010-03-08T11:08:58.217 回答
1

试试这个:

double verH = double (hoogtePlaatje) / breedtePlaateje;

如果你用一个整数除以一个整数,你会得到一个截断的答案。将其中一个施放为双倍,整个分区将作为双倍进行。

于 2010-03-08T11:10:02.617 回答