У меня есть изображение шириной 888 пикселей и высотой 592 пикселя с соотношением сторон ширины: высоты как 3: 2.
Следующее дает неправильное значение 1 из-за целочисленного вычисления/усечения, поскольку BitmapDecoder.PixelWidth и BitmapDecoder.PixelHeight оба являются uint
(целое число без знака), а decoder
ниже являются объектом BitmapDecoder.
double aspectRatio = decoder.PixelWidth / decoder.PixelHeight;
Следующее дает ожидаемое правильное значение 1,5, но Visual Studio говорит, что «Cast является избыточным», но почему?
double aspectRatio = (double)decoder.PixelWidth / (double)decoder.PixelHeight;
double aspectRatio = static_cast<double>(decoder.PixelWidth) / decoder.PixelHeight;
должно быть достаточно, чтобы компилятор использовалPixelHeight
как двойной. - person Pixelchemist   schedule 02.12.2015