我正在尝试写一些东西来让我的图像正确显示。 我有 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;
}
}
有关我的方法的任何提示也很可爱。
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 ;
我从未使用过 C#,但可能您需要将其中一个变量转换为 double,如下所示:
double verH = (double)hoogtePlaatje/breedtePlaatje;
试试这个:
double verH = double (hoogtePlaatje) / breedtePlaateje;
如果将一个 int 除以一个 int,您将得到一个截断的结果。将其中一个变为双倍,整个除法将变为双倍。
C 升号像小孩子一样除以整数。丢弃任何剩余的小数部分。只需将分母转换为双精度型或浮点数,它就会按照您期望的方式工作。当除以常量整数时,请记住在整数后面加上 .0 以使其成为双精度数。