首页 > 解决方案 > 我不知道如何从 'float' 转换为 'int'

问题描述

我正在学习编程,我被这个错误困扰了很长时间

我尝试将变量更改为浮动

        Color col;
        float red, green, blue,gray;

        for (int i = 0; i < oImage.Width; i++)
            for (int j = 0; j < oImage.Height; j++)
            {
                col = oImage.GetPixel(i, j);
                red = col.R;
                green = col.G;
                blue = col.B;
                gray = red*0.21 + green*0.72 + blue*0.07;


             oImage.SetPixel(i, j, Color.FromArgb(gray, gray, gray));

            }

        picImage.Refresh();

我希望输出是将普通照片转换为光度背景

标签: c#visual-studio

解决方案


代替

gray = red*0.21 + green*0.72 + blue*0.07;
....
oImage.SetPixel(i, j, Color.FromArgb(gray, gray, gray));

gray = red * 0.21f + green * 0.72f + blue * 0.07f;
...
oImage.SetPixel(i, j, Color.FromArgb((int)gray, (int)gray, (int)gray));
  • 0.21被认为是双重的。如果添加 a f,它将将该值标记为float 参考:

不带后缀或带 d 或 D 后缀的字面量是 double 类型

带有 f 或 F 后缀的字面量是 float 类型

带有 m 或 M 后缀的字面量是十进制类型

  • float 可以铸造成int这样的(int)myFloatValue作品

推荐阅读