【发布时间】:2016-03-06 13:44:51
【问题描述】:
我有一个宽度为 888 像素,高度为 592 像素的图像,宽高比为 3:2。
由于整数计算/截断,以下生成错误值 1,因为 BitmapDecoder.PixelWidth 和 BitmapDecoder.PixelHeight 都是 uint(无符号整数),而 decoder 下面是 BitmapDecoder 对象。
double aspectRatio = decoder.PixelWidth / decoder.PixelHeight;
以下给出了预期的正确值 1.5,但 Visual Studio 说“演员表是多余的”,但为什么呢?
double aspectRatio = (double)decoder.PixelWidth / (double)decoder.PixelHeight;
【问题讨论】:
-
你只需要一个(双)演员 - double / int = double。或 int / double = double。
-
如果用任何数字类型除以双精度数,结果将始终是双精度数。
-
double aspectRatio = static_cast<double>(decoder.PixelWidth) / decoder.PixelHeight;应该足以让编译器使用PixelHeight作为双精度。 -
为了绝对准确,我希望 Visual Studio 在必要时不理会第一个演员表,而只将第二个演员表渲染为多余的。从这个意义上说,Visual Studio 有点误导,但可以解释(或争论)原因。
-
这和C++有什么关系?
标签: c# visual-studio-2015 uwp